詹学伟

詹学伟

一个爱好编程的90后站长。

关注我詹学伟个人微信号:tobecomputer

您现在的位置是:网站首页>博客详情

JDK10新特性一

2020-11-21 zhanxuewei 专业交流 46 0

专业  

 一、JDK10新特性

局部变量类型推断

var:保留类型。不是关键字

/**

 * JDK10新特性:局部变量类型推断

 * @author Administrator

 *

 */

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 {

    /**

     * 该特定注意点:

     * 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

JDK10G1Garbage-Frist)全收集器

 

二、新增73个新功能扩展API类库

1         copyOf方法

java.util.Listjava.util.Setjava.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 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"));

  }

}

 

3 Java.io.PrintStreamjava.io.PrintWriter

这两个类都有三个新的构造方法,他们需要而外的参数charset

代码

/**

 * java.io.PrintStreamjava.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();

  }

}


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();

  }

}


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

     }

  }

}


文章评论

  • 2020-11-21: 凄凄切切
  • 2020-11-21: 1111