1、局部变量类型推断
JDK10最重要的更新作者感觉就是局部变量类型推断,类似于JS,这里采用了var。
var i = 10;
var str="abc";
var list = new ArrayList<>();
list.add("list test var");
var set = new HashSet<>();
set.add("set test var");
var map = new HashMap<String,String>();
map.put("test", "map test var");
var users = new Users();
//我们定义好了Users类
System.out.println(i);
System.out.println(str);
for(var i1=0;i1<list.size();i1++) {
System.out.println(list.get(i1));
}
for(var temp :set) {
System.out.println(temp);
}
Set<String> keys = map.keySet();
for(var key :keys) {
System.out.println(map.get(key));
}
System.out.println(users);
这里我们有几点需要说明的这里的var类型只能用于局部变量,不能用于类的成员变量
var:保留类型,不是关键字。我们依然可以定义var的变量名或者方法名。
var类型不许为空。原因很简单,如果赋值为空,则var不能推断出是什么类型的变量
2、Garbage-Frist全收集器
JDK10,采用G1全收集器用于回收垃圾
3、copyOf方法
新增copyOf方法
在java.util.List、java.util.Set、java.util.Map新增加了一个静态方法copyOf
这些方法按照其迭代顺序返回一个不可修改的列表、集合或映射包含了给定的元素的集合。
例如:
var list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
var list2 = List.copyOf(list);
4、Java.io.ByteArrayOutputStream:toString(Charset)
新增的方法,可以指定字符集
5、Java.io.PrintStream、java.io.PrintWriter
新增构造方法,也可以指定字符集
6、Java.io.Reader:transferTo方法
从这个Reader中读取所有字符串,并按照所读取的顺序将字符串写入给指定的Writer
var reader = new BufferedReader(new InputStreamReader(new FileInputStream("/aa.txt"), "gbk"));
var p = new PrintWriter(new File("bb.txt"));
reader.transferTo(p);
p.flush();
p.close();
reader.close();
//异常抛出
可以实现文件的copy。
7、java.util.Formatter、java.util.Scanner
var scan = new Scanner(new FileInputStream(new File("aa.txt")),"gbk");
scan.useDelimiter(" ");
while(scan.hasNext()) {
System.out.println(scan.next());