JDK10新特性詳解
1、區域性變數var
將前端思想var關鍵字引入java後段,自動檢測所屬於型別,一種情況除外,不能為null,因為不能判斷具體型別,會報異常。
@Test public void test1(){ var number = 10; var str = "i like java"; var list = new ArrayList<>(); var map = new HashMap<>(); var set = new HashSet<>(); list.add("test var is list"); map.put("1","test var is map"); set.add("test var is set"); System.out.println(number); System.out.println(str); System.out.println(list.toString()); System.out.println(map.toString()); System.out.println(set.toString()); }
結果:
10 i like java [test var is list] {1=test var is map} [test var is set]
var可以用於任何型別,基本型別,集合,以及實體類等等都可以,省略了我們在前面寫入具體的型別,我們儘管var,讓它自己去判斷就好了。
2、copyOf方法
在java.util.List、java.util.Set、java.util.Map新增加了一個靜態方法copyOf,這些方法按照其迭代順序返回一個不可修改的列表、集合或對映包含了給定的元素的集合。但是如果將返回後的集合繼續修改,那麼報異常。
@Test public void test2(){ var list = new ArrayList<>(); list.add("first"); list.add("second"); list.add("third"); var result = List.copyOf(list); System.out.println(result.toString()); }
結果:
[first, second, third]
3、ByteArrayOutputStream
Java.io.ByteArrayOutputStream,過載toString()方法,通過使用指定的字符集編碼位元組,將緩衝區的內容轉換為字串,以前是預設沒有引數,現在加了一個編碼的字元方法。
public static void main(String[] args) throws Exception { String str = "我喜歡java"; ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes("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()); }
這個是我們正常的格式,但是當我們修改程式碼,str.getBytes("gbk")的時候,建立的txt為亂碼,那麼我們使用toString()的新增方法,替換gbk。
4、PrintStream、PrintWriter
Java.io.PrintStream,Java.io.PrintWriter,這兩個類都有三個新的構造方法,他們需要而外的引數charset
@Test public void test3() throws FileNotFoundException, UnsupportedEncodingException { String str = "我也特別喜歡java"; var pri = new PrintWriter("/Users/tentsuuhou/Desktop/11.txt"); pri.println(str); pri.flush(); pri.close(); }
我這個路徑是mac電腦的,如果你是windows,可以寫“d:/aa.txt“ 不過都需要提前建立好txt資料夾
結果為:
但是我們這個txt預設的都是utf-8格式的,如果突然改成gbk的話,格式會不匹配出現亂碼,畢竟txt檔案格式要和輸出的格式一致才可以,這是我們可以使用一下。
var pri = new PrintWriter("/Users/tentsuuhou/Desktop/11.txt","gbk");
我們直接在後面新增一個格式引數就可以直接解決啦
5、Reader:transferTo方法
Java.io.Reader:transferTo從這個Reader中讀取所有字串,並按照所讀取的順序將字串寫入給指定的Writer
@Test public void test4() throws IOException { var reader = new BufferedReader(new InputStreamReader(new FileInputStream("/Users/tentsuuhou/Desktop/11.txt"), "utf-8")); var p = new PrintWriter(new File("/Users/tentsuuhou/Desktop/12.txt")); reader.transferTo(p); p.flush(); p.close(); reader.close(); }
結果:12.txt檔案將11.txt檔案拷貝過來了,注意編碼格式也要一致才可以。用這個方法方便了許多。
6、Formatter、Scanner
java.util.Formatter、java.util.Scanner新增三個構造方法,除了其他引數之外,都需要一個charset引數,將11.txt內容替換成這樣
@Test public void test5() throws FileNotFoundException { var scan = new Scanner(new FileInputStream(new File("/Users/tentsuuhou/Desktop/11.txt")),"utf-8"); scan.useDelimiter(" |,"); while(scan.hasNext()) { System.out.println(scan.next()); } }
scan.useDelimiter(" |,"); 這是空格或者‘,’ 都要分割,如下結果為:
7、垃圾收集器的優化
1、JDK9垃圾收集器 :新生代:ParNew收集器;老年代:Parallel Old收集器 Stop The World 2、JDK10垃圾收集器:JDK10:G1(Garbage-Frist)全收集器
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-2674123/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JDK10新特性-你瞭解多少JDK
- 《JDK10新特性官方文件》從JDK10中移除javah工具JDKJava
- Android Studio 新特性詳解Android
- jdk5到jdk10各個版本的新特性JDK
- 詳解C#7.0新特性C#
- JDK8新特性詳解JDK
- JDK9新特性詳解JDK
- JDK11新特性詳解JDK
- JDK12新特性詳解JDK
- JDK13新特性詳解JDK
- Java8 新特性詳解Java
- JDK8新特性詳解(二)JDK
- JDK8新特性詳解(一)JDK
- 收藏版:《JDK13新特性詳解》JDK
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- java JDK1.7版本新特性詳解JavaJDK
- Dubbo3詳解(5大新特性及功能圖解)圖解
- Oracle 18c新特性詳解:In-Memory 專題Oracle
- C#–特性詳解C#
- Oracle 18c新特性詳解-多租戶專題Oracle
- Win10 Build 17692釋出 7個新特性詳解Win10UI
- Swift 5新特性詳解:ABI 穩定終於來了!Swift
- 全面煥新|詳解 Grafana v9.0.x 新增功能特性Grafana
- ES10特性詳解
- 顯微鏡下的webpack4的新特性:mode詳解Web
- SpreadJS 類Excel表格控制元件 - V12 新特性詳解JSExcel控制元件
- 整理了一份php8新特性詳解pdf文件PHP
- Kubernetes 1.24新特性解讀
- 蒲公英 · JELLY技術週刊 Vol.14: Vue 3 新特性詳解Vue
- React 16 新特性全解(上)React
- Python 3.8 新特性全面解讀Python
- Apache Kyuubi 1.6.0 新特性解讀Apache
- C# 9.0新特性詳解系列之三:模組初始化器C#
- 詳解C#特性和反射(四)C#反射
- 詳解C#特性和反射(三)C#反射
- 詳解C#特性和反射(二)C#反射
- 詳解C#特性和反射(一)C#反射
- vue-cli 3.0新特性解讀Vue