资讯专栏INFORMATION COLUMN

JAVA刷题(持续更新)

cyixlq / 1906人阅读

摘要:年期间微软公司发布,无论是技术实现上还是目标用户都与有很多相近之处,给带来了很多讨论比较和竞争对的发展进程影响很大。年月日大会上,公司宣布最终会将开源。及其他与公司争夺的控制权,令从跨平台技术变为绑定在上的技术是微软公司的主要目的。

一、基础 面向对象 面向对象概念

面向对象(Object Oriented,OO)是软件开发方法

对象:万物皆对象,对象可以是具体的事物,也可以是抽象的规则、计划或事件。

对象的状态和行为:状态代表数据,行为代表方法。

类(数据类型):具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。类的具体化就是对象,对象是类的实例。类具有属性(对象状态的抽象)和操作(对象行为的抽象)

类的结构:世界上存在若干类,这些类之间存在关系,通常存在两种主要的结构关系。⒈一般-具体结构(分类结构,"is a"关系)⒉整体-部分结构(组织结构,"has a"关系)

消息和方法:对象之间进行通信的结构叫做消息。对象接收到消息,根据消息说明去调用方法(消息应说明执行对象、方法、参数)。方法有方法名、返回值、参数、方法体。

面向对象特征

封装:封装对象的属性和行为,并设置访问权限(支持方法重载)

继承:继承父类的属性和行为,提供复用性。(单继承,接口多继承;支持方法重写)

多态:基于封装、继承(重写)、父引用指向子对象;允许不同的对象对同一消息做出不同反应;编译期绑定(成员变量、静态变量、静态方法)、运行期绑定(成员方法);方法多态(重写,重载)、引用多态(向上造型);

抽象:表示对问题领域进行分析、设计中得出的抽象的概念,基于abstract关键字,必须被子类继承重写,无法私有化(private)、静态化(static)、最终化(final)。

JAVA JAVA体系

JAVASE(桌面程序)

JAVAEE(网站服务)

JAVAME(手机嵌入式)

JAVACard(Java小程序Applets)

JAVA特点

简单性:单继承、自动拆装箱、简化内存管理(引用替代指针,提供自动GC垃圾回收器)...

移植性:Java先编译成字节码(中间码),由JVM来进行解释(二进制码)运行。

健壮性:强类型机制、异常处理、垃圾的自动收集等机制。

多线程:支持多线程

JAVA发展史

1991年4月:James Gosling博士领导Gree Project,推出JAVA前身(Oak橡树)

1995年5月23日:Oak语言改名为JAVA,并在SunWorld大会上正式发布JAVA 1.0版本,并提出"Write Once, Run AnyWhere"口号。

1996年1月23日:JDK 1.0发布,提供纯解释执行的Java虚拟机实现(Sun Classic VM)。代表技术:Java虚拟机、Applet、AWT等...

1996年4月:10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。

1996年5月底:Sun公司于美国旧金山举行首届JavaOne大会。

1996年9月:已有大约8.3万个网页应用了Java技术来制作。

1997年2月19日:JDK 1.1发布。代表技术:JAR文件格式、JDBC、JavaBeans、RMI。Java语法:内部类(Inner Class)和反射(Reflection)

1998年12月4日:JDK 1.2-Playground(竞技场)发布。Sun在这个版本中将Java体系拆分为3个方向:J2SE(面向桌面开发)、J2EE(面向企业级开发)、J2ME(面向手机移动终端开发);代表技术:EJB、Java Plug-in、Java IDL、Swing等;Java虚拟机:第一次内置JIT(Just In Time)编译器(JDK1.2曾并存Classic VM、HoSpot VM、Exact VM,Exact VM只在Solaris平台出现过;后两者是内置JIT编译器;之前版本Classic VM只能以外挂形式使用JIT编译器);Java语法:添加strictfp关键字;Java API:Collections集合类。

1999年3月:JDK 1.2.1发布。

1999年4月8日:JDK 1.1 共发布 1.1.0 ~ 1.1.8 九个版本。从1.1.4之后,每个版本都有工程代号:Sparkler、Pumpkin、Abigail、Brutus、Chelsea

1999年4月27日:HotSpot虚拟机发布。最初由"Longview Technologies"小公司发布。1997年被Sun公司收购。HotSpot虚拟机发布时是作为JDK1.2的附加程序提供。后来成为JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。

1999年7月:JDK 1.2.2发布。

2000年5月8日:JDK 1.3-Kestrel(美洲红隼)发布。Java API:数学运算、新的Timer API等;JNDI作为一项平台级服务提供(以前仅是一项扩展);使用CORBA IIOP实现RMI的通信协议;改进JAVA 2D(提供大量新的Java 2D Api,新增JavaSound类库)。

2001你那5月17日:JDK 1.3.1-Ladybrid(瓢虫)修正版本发布。自JDK 1.3开始,Sun维持一个习惯:每隔两年发布一个JDK主版本,以动物命名,期间的各个修正版本则以昆虫作为工程名称。

2002年2月13日:JDK 1.4-Merlin(灰背隼)发布。技术特性:正则表达式、异常链、NIO、日志类、XML解析器和XSTL转换器等。

2002年9月16日:JDk 1.4.1-Grasshopper(蚱蜢)修正版本发布。

2002年期间:微软公司发布.NET Framework,无论是技术实现上还是目标用户都与Java有很多相近之处,给Java带来了很多讨论、比较和竞争对Java的发展进程影响很大。

2003年6月26日:JDK 1.4.2-Mantis(螳螂)修正版本发布。

2004年9月30日:JDK 1.5-Tiger(老虎)发布。语法特性:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach)等;Java 虚拟机:改进Java的内存模型(Java Memory Model,JMM);Java API:提供java.util.concurrent并发包等。

2006年11月13日:JavaOne大会上,Sun公司宣布最终会将Java开源。

2006年12月11日:JDK 1.6-Mustang(野马)发布。命名方式:终结J2EE、J2SE、J2ME命名方式,启用Java SE6、Java EE6、Java ME6命名方式;Java API:提供动态语言支持(通过内置Mozilla JavaScript Rhino引擎实现)、提供编译API、微型HTTP服务器API等;Java虚拟机:做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法。

2009年2月19日:JDK 1.7-Dolphin(海豚)发布。主要改进:新的G1收集器(2012年4月的Update4中才正式"转正")、加强非Java语言的调用支持(JSR-292,未完全实现定型)、升级类加载架构等。推迟计划:lambda项目(Lambda表达式、函数式编程)、Jigsaw项目(虚拟机模块化支持)、Coin项目(语言细节进化)。

2014年3月18日:JDK 1.8-Spider(蜘蛛)发布。语言特性:Lambda表达式、方法引用、引入defalut关键字、重复注解、扩展注解的支持、Optional、Stream、Date/Time API、JavaScript引擎Nashorn、Base64。

JVM JVM发展史

Sun Classic/Exact VM: Classic VM:(第一款商用Java虚拟机;纯解释器,外挂编译器(外挂后解析器便不再工作)),Exact VM(两级即时编译器;编译器与解析器混合工作模式;使用准确式内存管理,可判断内存数据的类型)

Sun HotSpot VM:由"Longview Technologies"小公司设计,最后被Sun公司收购,具备Exact VM的优点,及热点代码探测技术(通过执行计数器找出最具有编译价值代码,通知JIT编译器以方法为单位进行编译。取代了Exact VM)

Sun Mobile-Embedded VM/Meta-Circular VM:面向移动和嵌入式市场。KVM(简单、轻量、高度可移植,运行速度较慢,曾广泛应用非智能手机上);CDC/CLDC HotSpot Implementation(Java ME的重要支柱);Squawk VM(Java代码比重很高);JavaInJava(Sun 公司实验室性质虚拟机,试图实现"元循环",内部没有JIT编译器,只以解释模式执行);Maxine VM(与JavaInJava相似,有先进的JIT编译器和垃圾收集器(但没有解释器),执行效率略高)。

BEA JRockit/IBM J9 VM:除Sun公司以外,其他研发虚拟机的公司中,规模最大、最著名的就是BEA和IBM公司。

Azul VM/BEA Liquid VM:高性能Java虚拟机

Apache harmony/Google Android Dalvik VM:"虚拟机",而非"Java 虚拟机"。

Microsoft JVM及其他:与Sun公司争夺Java的控制权,令Java从跨平台技术变为绑定在Windows上的技术是微软公司的主要目的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77664.html

相关文章

  • Leetcode 刷题持续更新

    摘要:字母区分大小写,因此和是不同类型的石头。输入输出暴力解法将宝石中的每个元素在石头中的数量相加的时间复杂度为石头中的每个元素此元素在宝石中则官方解法哈希表将搜索的时间复杂度变为 本文章基于Datewhale第30期组队学习 2021.11.15 # 1 两数之和# 给定一个整数数组 nums...

    XanaHopper 评论0 收藏0
  • 刷题——Codewars Js题目(持续更新

    摘要:发现一个很好的练习做题网站都是自己做过的,先放自己的答案,再放自己觉得不错的其他回答。 发现一个很好的练习做题网站 Codewars 都是自己做过的,先放自己的答案,再放自己觉得不错的其他回答。 1. 将首字母放到后面并加上ay pigIt(This is my string)转换成:pigIt(hisTay siay ymay tringsay) mine function...

    toddmark 评论0 收藏0
  • JavaSE与数据结构基础知识系列——专栏导航

    ⭐️前面的话⭐️ 大家好!这是Java基础知识与数据结构博文的导航帖,收藏我!学习Java不迷路! ?博客主页:未见花闻的博客主页 ?欢迎关注?点赞?收藏⭐️留言? ?本文由未见花闻原创,CSDN首发! ?首发时间:?2021年11月11日? ✉️坚持和努力一定能换来诗与远方! ?参考书籍:?《Java核心技术卷1》,?《Java核心技术卷2》,?《Java编程思想》 ?参考在线编程网站:?牛...

    Cc_2011 评论0 收藏0
  • 常用java方法整理(刷题向,不定期更新

    1. CharacterisDigit(), isAlphabetic(), isLetter() [Alphabet > letter]toLowerCase()2.各种长度String length()List类:size()array: length3.Arrayssort()4.Math系列容易混淆(double) pow(double m, double n) m的n次方(double)...

    taohonghui 评论0 收藏0
  • LeetCode刷题题解:495. 提莫攻击

    摘要:正式地讲,提莫在发起发起攻击意味着艾希在时间区间含和处于中毒状态。示例输入输出解释提莫攻击对艾希的影响如下第秒,提莫攻击艾希并使其立即中毒。第秒,提莫再次攻击艾希,艾希中毒状态又持续秒,即第秒和第秒。 ...

    buildupchao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<