1. 介绍2
JAVA作为使用的主力语言,掌握下其历史发展也是有必要的。看看从JAVA5开始到现在的JAVA9有哪些变化。借此机会,也可以看看哪些特性我们是已经用到的,哪些是还没有用到的。
我们在IDEA里面也可以看到language level里面的信息,这里也大致写了下各个版本JDK的新特性。
简单概括下就是:
JAVA1.3:普通的原始的JAVA,基本语法相信大家都见过了
JAVA1.4:assert关键字
JAVA5:枚举类型、泛型、自动拆装箱
JAVA6: @Override注解
JAVA7: <>符号、ARM支持、支持多catch
JAVA8:Lamda表达式,类型注解等
JAVA9: 模块化、接口中的私有方法等
下面我们更加详细的分析下各个版本有哪些新特性。
2. JAVA5新特性
2.1 泛型 Generics
引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection的基石。
泛型可以带来如下的好处总结如下:
类型安全:抛弃List、Map,使用List 、Map 给它们添加元素或者使用Iterator 遍历时,编译期就可以给你检查出类型错误
方法参数和返回值加上了Type: 抛弃List、Map,使用List 、Map
不需要类型转换:List list=new ArrayList ();
类型通配符“?”: 假设一个打印List 中元素的方法printList,我们希望任何类型T的List 都可以被打印 ##2.2 枚举类型 引入了枚举类型 ##2.3 自动装箱拆箱(自动类型包装和解包)autoboxing & unboxing 简单的说是类型自动转换。 自动装包:基本类型自动转为包装类(int ——Integer) 自动拆包:包装类自动转为基本类型(Integer——int) ##2.4 可变参数varargs(varargs number of arguments) 参数类型相同时,把重载函数合并到一起了。 如:
publicvoidtest(object... objs){for(Object obj:objs){ System.out.println(obj); }}
2.5 Annotations(重要) 它是java中的metadata(注释)
注解在JAVA5中就引入了。这是非常重要的特性。现在注解的应用已经随处可见。不过JAVA5的注解还不成熟,没法自定义注解。
2.6 新的迭代语句
for(intn:numbers){//process}
2.7 静态导入(import static )
导入静态对象,可以省略些代码。不过这个也不常用。、
importstaticjava.lang.System.out;//导入java.lang包下的System类的静态方法out;publicclassHelloWorld{publicstaticvoidmain(String[] args){out.print("Hello World!");//既是在这里不用再写成System.out.println("Hello World!")了,因为已经导入了这个静态方法out。}}
2.8 新的格式化方法(java.util.Formatter)
formatter.format("Remaining account balance: $%.2f", balance);
2.9 新的线程模型和并发库Thread Framework(重要)
最主要的就是引入了java.util.concurrent包,这个都是需要重点掌握的。
HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList
在大并发量读取时采用java.util.concurrent包里的一些类会让大家满意BlockingQueue、Callable、Executor、Semaphore
作者:未影P
链接:https://www.jianshu.com/p/498168f7c443
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。