概述
一、新特性
1.1 局部变量类型推断
首先从名字来看,可知其作用范围是针对局部变量。它其实就是通过保留类型var,来定义局部变量,可以根据变量值来进行类型的推断。需要注意的是:var 是保留类型不是关键字。意味着我们还可以用var来定义变量名或者是方法名。其次就是var不允许赋值为null。它还可以推断出自定义的类型,具体示例代码如下:
自定义Users类:
class Users{
private String username;
private Integer userage;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getUserage() {
return userage;
}
public void setUserage(Integer userage) {
this.userage = userage;
}
@Override
public String toString() {
return "Users [username=" + username + ", userage=" + userage + "]";
}
}
使用示例:
public class Demo1 {
public static void main(String[] args) {
var i = 10;
var str="abc";
var list = new ArrayList<>();
list.add("define list by var");
var set = new HashSet<>();
set.add("define set by var");
var map = new HashMap<String,String>();
map.put("test", "define map by var");
var users = new Users();
users.setUserage(20);
users.setUsername("define user by var");
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);
}
}
1.2 垃圾回收器优化
我们知道JVM的分带策略中有新生代和老年带,对不同的带采取不同的垃圾收集器。比如在jdk9中,新生代用的垃圾收集器是ParNew收集器。老年代用的是Parallel Old收集器。而在jdk10中,新生代和老年带都使用G1(Garbage-Frist)全收集器。
二、部分新增的API类库
2.1 copyOf方法
在java.util.List、java.util.Set、java.util.Map新增加了一个静态方法copyOf这些方法按照其迭代顺序返回一个不可修改的列表、集合或映射包含了给定的元素的集合。
/**
* copyOf方法的使用
* @author Administrator
*
*/
public class Demo2 {
public static void main(String[] args) {
var list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
var list2 = List.copyOf(list);
/*for (String string : list2) {
System.out.println(string);
}*/
var set = new HashSet<String>();
set.add("b");
set.add("a");
set.add("c");
set.add("d");
var set2 = Set.copyOf(set);
/*for (String string : set2) {
System.out.println(string);
}*/
var map = new HashMap<>();
map.put("k1", "a");
map.put("k2", "b");
var map2 = Map.copyOf(map);
var keys = map2.keySet();
for (Object object : keys) {
System.out.println(map2.get(object));
}
}
}
2.2 Java.io.ByteArrayOutputStream:toString(Charset)
重载toString()方法,通过使用指定的字符集编码字节,将缓冲区的内容转换为字符串。
/**
* java.io.ByteArrayOutputStream.toString(Charset)
* @author Administrator
*
*/
public class Demo3 {
public static void main(String[] args) throws Exception {
String str = "我是中国人";
ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes("gbk"));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int c = 0;
while((c = bis.read()) != -1) {
bos.write(c);
}
//bos.toString() 默认的使用的UTF-8编码
System.out.println(bos.toString());
System.out.println(bos.toString("gbk"));
}
}
2.3 Java.io.PrintStream、java.io.PrintWriter
这两个类都增加了三个新的构造方法,他们需要而外的参数charset
/**
* java.io.PrintStream、java.io.PrintlWriter新增构造方法
* @author Administrator
*
*/
public class Demo4 {
public static void main(String[] args) throws Exception{
String str = "中锄禾日当午,汗滴禾下土";
var p = new PrintWriter("d:/aa.txt", "gbk");
p.println(str);
p.flush();
p.close();
}
}
2.4 Java.io.Reader:transferTo方法
这个Reader中读取所有字符串,并按照所读取的顺序将字符串写入给指定的Writer
/**
* Reader:transferTo方法
* @author Administrator
*
*/
public class Demo5 {
public static void main(String[] args) throws Exception{
var reader = new BufferedReader(new InputStreamReader(new FileInputStream("d:/aa.txt"), "gbk"));
var p = new PrintWriter(new File("d:/cc.txt"));
reader.transferTo(p);
p.flush();
p.close();
reader.close();
}
}
2.5 java.util.Formatter、java.util.Scanner
新增三个构造方法,除了其他参数之外,都需要一个charset参数
/**
* java.util.Scanner
* @author Administrator
*
*/
public class Demo6 {
public static void main(String[] args) throws Exception {
var scan = new Scanner(new FileInputStream(new File("d:/aa.txt")),"gbk");
scan.useDelimiter(" |,");
while(scan.hasNext()) {
System.out.println(scan.next());
}
}
}
最后
以上就是酷酷发带为你收集整理的Java10新特性及部分新增API介绍一、新特性二、部分新增的API类库的全部内容,希望文章能够帮你解决Java10新特性及部分新增API介绍一、新特性二、部分新增的API类库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复