java的各版本的新特性

java各版本的新特性包含本身碰見總結的,也包含網上各個大神的成果。此特性總結會不按期更新。html

java5:java5的新特性java

  • 泛型
  • 枚舉
  • 裝箱拆箱
  • 變長參數
  • 註解
  • foreach循環
  • 靜態導入:import static …
    • 好處:使用靜態導入在使用導入包中的靜態方法、字段時,直接使用而不須要使用className.fun(),而直接使用fun(),就至關於靜態方法或者字段定義在當前類中同樣,省略了類名。
    • 弊端:簡化方法會致使代碼可讀性低。而且若是同時導入的兩個類中又有重命名的靜態成員,會出現編譯器錯誤。例如Integer類和Long類的MAX_VALUE。
    • 整體而言,仍是不建議使用。
  • 格式化
  • 線程框架/數據結構
  • Arrays工具類/StringBuilder/instrument

java6:java6的新特性segmentfault

  • JSR223腳本引擎
  • JSR199--java Compiler API
  • JSR269--Pluggable Annotation Processing API
  • 支持JDBC 4.0規範
  • JAX-WS 2.0規範

java7:java7的新特性 java7語法新特性數據結構

  • suppress異常(新語法)
  • 捕獲多個異常(新語法)
  • try-with-resources(新語法)
  • JSR341-Expression Language Specification(新規範)
  • JSR203-More New I/O APIs for the Java Platform(新規範)
  • JSR292與InvokeDynamic
  • 支持JDBC4.1規範
  • Path接口、DirectoryStream、Files、WatchService
  • jcmd
  • fork/join framework
  • Java Mission Control

java8:java8新特性oracle

  • lamda表達式(重磅)app

  • 集合的stream操做框架

  • 提高HashMaps的性能ide

  • Date-Time Package工具

  • java.lang and java.util Packages性能

  • Concurrency

  • 關鍵字 default 修飾符

    • 通常來講default關鍵字是在switch-case中才使用的。在使用jdk8看List源碼的時候,發現了default這個關鍵字做爲修飾符。看如下List中的代碼:

    • default void replaceAll(UnaryOperator<E> operator) {
          Objects.requireNonNull(operator);
          final ListIterator<E> li = this.listIterator();
          while (li.hasNext()) {
              li.set(operator.apply(li.next()));
          }
      }
    • 後來查詢資料發現default關鍵字做爲修飾符是java8 的新特性,是在接口中使用。使用default關鍵字可使接口中的方法有方法體,在接口實現的時候能夠實現此方法,也可不用實現。能夠參照下面例子:

    • /**
       * 接口中定義兩個default方法
       */
      public interface TestInterface {
      
          default void init(){
              System.out.println("interface init");
          }
      
          default void destroy(){
              System.out.println("destroy");
          }
      
      }
    • /**
       * 建立TestClass類實現TestInterface接口
       */
      public class TestClass implements TestInterface {
      
          // 只實現接口中一個init()方法
          @Override
          public void init(){
              System.out.println("testClass init");
          }
      
          public static void main(String[] args){
              TestClass testClass = new TestClass();
              testClass.init();
              testClass.destroy();
          }
      
      }

java9:java9新特性

java官網中並無java9的JDK下載包,據消息稱,java9剛出未滿一歲就被無情拋棄。oracle官網都直接提供了java10,還出了java11的預覽版。java11是繼java8之後的第一個長期支持的java版本。

相關文章
相關標籤/搜索