JAVA作为使用的主力语言,掌握下其历史发展也是有必要的。看看从JAVA5开始到现在的JAVA11有哪些变化。借此机会,也可以看看哪些特性我们是已经用到的,哪些是还没有用到的。
如果有程序猿小伙伴们在工作和学习过程中,遇到一些磕磕碰碰的问题,难以解决,这些问题可能会困扰你许久,但是懂得人一下就解决了,为此我特意建了一个java学习群,快来加入我们吧:925050116,里面有大量优质视频资料免费领取喔,让你少走弯路,互相学习交流,一起进步,不负年华!!!
1.java10
2018年3月20日,Java 10 正式发布,这一次没有跳票。它号称有109项新特性,包含12个JEP。需要注意的是,本次Java10并不是Oracle的官方LTS版本,还是坐等java11的发布再考虑在生产中使用
特性列表
- 局部变量的类型推断 var关键字
- GC改进和内存管理 并行全垃圾回收器 G1
- 垃圾回收器接口
- 线程-局部变量管控
- 合并 JDK 多个代码仓库到一个单独的储存库中
- 新增API:ByteArrayOutputStream
- 新增API:List、Map、Set
- 新增API:java.util.Properties
- 新增API: Collectors收集器
- 其它特性
1、局部变量的类型推断 var关键字
这个新功能将为Java增加一些语法糖 - 简化它并改善开发者体验。新的语法将减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。
这可能是Java10给开发者带来的最大的一个新特性。下面主要看例子:
public static void main(String[] args) {
var list = new ArrayList<String>();
list.add("hello,world!");
System.out.println(list);
}
这是最平常的使用。注意赋值语句右边,最好写上泛型类型,否则会有如下情况:
public static void main(String[] args) {
var list = new ArrayList<>();
list.add("hello,world!");
list.add(1);
list.add(1.01);
System.out.println(list);
}
list什么都可以装,非常的不安全了。和js等语言不同的是,毕竟Java还是强类型的语言,所以下面语句是编译报错的:
public static void main(String[] args) {
var list = new ArrayList<String>();
list.add("hello,world!");
System.out.println(list);
list = new ArrayList<Integer>(); //编译报错
}
注意:下面几点使用限制
局部变量初始化
for循环内部索引变量
传统的for循环声明变量
public static void main(String[] args) {
//局部变量初始化
var list = new ArrayList<String>();
//for循环内部索引变量
for (var s : list) {
System.out.println(s);
}
//传统的for循环声明变量
for (var i = 0; i < list.size(); i++) {
System.out.println(i);
}
}
下面这几种情况,都是不能使用var的
方法参数全局变量
public static var list = new ArrayList<String>(); //编译报错
public static List<String> li