JDK10新特性讲解
JDK10新特性讲解一、编写HelloWorld.通过控制台打印public class Demo{public static void main(String[] args){System.out.println(“HelloWorld”);}}二、集成开发IDEEclipse-Oxygen 4.7.3a 是2018年最新的版本,是支持JDK10的IDE1下载地址https://www.ecli
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());
}
}
}
更多推荐
所有评论(0)