常用的jdk10新特性

本文介绍了JDK10常用新特性。JDK从9起不再提供32位版本,JDK10特性包括局部变量类型推断,可用var定义多种类型变量;优化垃圾收集器,采用G1全收集器;新增73个扩展API类库;还将JDK多存储库合并为一个,简化开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用的jdk10新特性

Jdk从9以后就不在提供32位版本了,均是64位

1局部变量类型推断
var:保留类型。不是关键字
1.只针对局部变量
2.var 是保留类型不是关键字。意味着我们还可以用var来定义变量名或者是方法名
3.需要提供一个确切的值来推断变量的类型
4.var 不允许赋值null

基本数据类型,list,set,Map,其他引用类型(例如:User),均可以使用var 来定义。
例如:

var num = 100;
var str = “abcd”;
var list = new ArrayList<>();
 var set = new HashSet<>();
 var map = new HashMap<String,String>();
 var user = new User();
//var index = null; 报错

2垃圾收集器的优化
JDK9:新生代:ParNew收集器。老年代:Parallel Old收集器
Stop The World
JDK10:G1(Garbage-Frist)全收集器
JDK10 通过并行Full GC,改善G1的延迟
jmc.exe监控java运行的情况

3.新增73个新功能扩展API类库

(1)copyOf方法
在java.util.List、java.util.Set、java.util.Map新增加了一个静态方法copyOf
这些方法按照其迭代顺序返回一个不可修改的列表、集合或映射包含了给定的元素的集合。

var list2 = List.copyOf(list);
var set2 = Set.copyOf(set);
var map2 = Map.copyOf(map);

如果修改:
例如:list2.add(something);
会报错:

Java.lang.UnsupportedOperationException 

(2)Java.io.ByteArrayOutputStream:toString(Charset)
添加有参数的toString©方法(重载)
重载toString()方法,通过使用指定的字符集编码字节,将缓冲区的内容转换为字符串。

  String str = "北京欢迎你";
		ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes("gbk"));
        //以gbk编码方式读取,默认以utf-8编码方式读取
		
		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"));//以gbk编码方式输出

(3)Java.io.PrintStream、java.io.PrintWriter
这两个类都增加了三个新的构造方法,这些方法都需要额外的参数charset

var str = "北京欢迎你";
var p = new PrintWriter("e:/wel.txt", "gbk");
//将str以gkb的编码方式输出到e盘下的wel.txt文件(windows下是ANSI编码,与gbk对应)

(4)Java.io.Reader 新增:transferTo方法
从这个Reader中读取所有字符串,并按照所读取的顺序将字符串写入给指定的Writer中
相当于文件拷贝,copyOf方法

var reader = new BufferedReader
(new InputStreamReader(new FileInputStream("e:/wel.txt"), "gbk"));
//以gbk编码方式读取e:/wel.txt 文件
var p = new PrintWriter(new File("e:/welc.txt"));//新建e:/welc.txt文件
reader.transferTo(p);//按照所读取wel.txt文件内容顺序将字符串写入给指定的welc.txt文件中

(5)java.util.Formatter、java.util.Scanner
新增三个构造方法,除了其他参数之外,都需要一个charset参数

//以gbk编码方式读取e:/wel.txt
var scan = new Scanner(new FileInputStream(new File("e:/wel.txt")),"gbk");
//useDelimiter 可以传入多个分隔符,用‘|’隔开,表示将读取的文件内容以‘分//隔符’的方式分隔并输出
		scan.useDelimiter(" |,");
		while(scan.hasNext()) {
//next:输出读取文件的全部内容
//nextLine:输出读取文件内容的一行
			System.out.println(scan.next());
		}

4.为了简化和简化开发,将JDK多存储库合并到一个存储库中
多年来,JDK的完整代码已经被分解成多个存储库。在JDK9 中有八个仓库:root、corba、hotspot、jaxp、jaxws、jdk、langtools和nashorn。在JDK10中被合并为一个存储库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值