JDK10新特性讲解

一、编写HelloWorld.通过控制台打印
public class Demo
{
public static void main(String[] args){
System.out.println(“HelloWorld”);
}
}

二、集成开发IDE
Eclipse-Oxygen 4.7.3a 是2018年最新的版本,是支持JDK10的IDE

1下载地址
https://www.eclipse.org/downloads/download.php?file=/oomph/epp/oxygen/R2/eclipse-inst-win64.exe

三、JDK10新特性
1局部变量类型推断
var:保留类型。不是关键字
/**

  • JDK10新特性讲解:局部变量类型推断
  • @author Administrator

*/
class Users{
private String username;
private Integer userages;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getUserage() {
return userages;
}
public void setUserage(Integer userages) {
this.userages= userages;
}
@Override
public String toString() {
return “Users [username=” + username + “, userages=” + userages + “]”;
}

}
public class Demo1 {

/**
 * 该特定注意点:
 * 1.只针对局部变量
 * 2.var 是保留类型不是关键字。意味着我们还可以用var来定义变量名或者是方法名
 * 3.var 不允许赋值null
 * @param args
 */
public static void main(String[] args) {
 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.setUserage(20);
 users.setUsername("user test 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);
}

}

2垃圾收集器的优化
JDK9:新生代:ParNew收集器。老年代:Parallel Old收集器
Stop The World
JDK10:G1(Garbage-Frist)全收集器

四、新增73个新功能扩展API类库
1copyOf方法
在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));
	}
}

}

2Java.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"));
}

}

3Java.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();
}

}

4Java.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();
}

}

5java.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());
	}
}

}

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐