### Java8 #### 1.Java 8 æ°ç¹æ§ç®ä»ï¼ ``` 1. ä»£ç æ´å°ï¼å¢å äºæ°è¯æ³ï¼Lambda 表达å¼ï¼ 2. 强大ç Stream APIï¼éåæ°æ®çæä½ï¼ 3. æå¤§åçåå°ç©ºæé å¼å¸¸ï¼Optional ç±» çä½¿ç¨ 4. æ¥å£çæ°ç¹æ§ 5. æ³¨è§£çæ°ç¹æ§ 6. éåçåºå± æºç å®ç° 7. æ°æ¥ææ¶é´ç api ``` #### 2.æ½è±¡ç±» å æ¥å£ç å¼åï¼ ``` æ½è±¡ç±»ï¼å«æ abstract 修饰符ç class å°±ç® æ½è±¡ç±»ï¼å®æ¢å¯ä»¥ææ½è±¡æ¹æ³ï¼ä¹å¯ä»¥æ æ®éæ¹æ³ï¼æé æ¹æ³ï¼éææ¹æ³ï¼ä½æ¯ä¸è½ææ½è±¡æé æ¹æ³ å æ½è±¡éææ¹æ³ãä¸å¦æå ¶å类没æå®ç°å ¶ææç æ½è±¡æ¹æ³ï¼é£ä¹è¯¥ åç±» ä¹å¿ é¡»æ¯ æ½è±¡ç±»ï¼ æ¥å£ï¼ä»å¯ä»¥çææ¯ æ½è±¡ç±»ç ä¸ä¸ªç¹ä¾ï¼ä½¿ç¨ interface ä¿®é¥°ç¬¦ï¼ å é¨ç»æï¼ jdk7ï¼æ¥å£åªæå¸¸éåæ½è±¡æ¹æ³ï¼æ æé å¨ jdk8ï¼æ¥å£å¢å äº é»è®¤æ¹æ³ å éææ¹æ³ï¼æ æé å¨ jdk9ï¼æ¥å£å 许 以 private ä¿®é¥°çæ¹æ³ï¼æ æé å¨ å ±åç¹ï¼ ä¸è½å®ä¾åï¼ å¤ææ¹å¼çä¸ç§ä½¿ç¨ï¼ ä¸åç¹ï¼ æ½è±¡ç±»æ¯åç»§æ¿çï¼èæ¥å£å¯ä»¥å¤ç»§æ¿ï¼å®ç°ï¼ï¼ ``` #### 3.Java8æ¯æå½æ°ç¼ç¨æ¯ä»ä¹ææï¼ å¨Java 8ä¹åï¼ææä¸è¥¿é½æ¯é¢å对象çãé¤äºåè¯ä¹å¤ï¼javaä¸ç ææå 容é½ä½ä¸ºå¯¹è±¡åå¨ãå¯¹æ¹æ³/彿°çææè°ç¨é½æ¯ä½¿ç¨å¯¹è±¡æç±»å¼ç¨è¿è¡çã æ¹æ³/åè½æ¬èº«å¹¶ä¸æ¯ç¬ç«åå¨çã 使ç¨Java 8ï¼å¼å ¥äºå½æ°å¼ç¼ç¨ãæä»¥æä»¬å¯ä»¥ä½¿ç¨å¿å彿°ãJavaæ¯ä¸ç§ä¸æµçé¢å对象è¯è¨ãé¤äºåå§æ°æ®ç±»åä¹å¤ï¼Javaä¸çææå 容齿¯ä¸ä¸ªå¯¹è±¡ãå³ä½¿æ¯ä¸ä¸ªæ°ç»ä¹æ¯ä¸ä¸ªå¯¹è±¡ãæ¯ä¸ªç±»é½å建对象çå®ä¾ã没æåæ³åªå®ä¹ä¸ä¸ªç¬ç«äºJavaç彿°/æ¹æ³ãæ æ³å°æ¹æ³ä½ä¸ºåæ°ä¼ éæè¿å该å®ä¾çæ¹æ³ä½ã #### 4.Java 8ä¸çå¯é项æ¯ä»ä¹ï¼ Java 8å¼å ¥äºä¸ä¸ªæ°ç容å¨ç±»java.util.Optional ãå¦æè¯¥å¼å¯ç¨ï¼å®å°å è£ ä¸ä¸ªå¼ãå¦æè¯¥å¼ä¸å¯ç¨ï¼ååºè¿å空çå¯é项ãå æ¤å®ä»£è¡¨ç©ºå¼ï¼ç¼ºå¤±å¼ãè¿ä¸ªç±»æåç§å®ç¨æ¹æ³ï¼å¦isPresentï¼ï¼ï¼å®å¯ä»¥å¸®å©ç¨æ·é¿å 使ç¨ç©ºå¼æ£æ¥ãç±äºä¸ç´æ¥è¿åå¼ï¼èæ¯è¿åå è£ å¨å¯¹è±¡ï¼æä»¥ç¨æ·å¯ä»¥é¿å 空æéå¼å¸¸ã #### 5.hashMapåçï¼java8åçæ¹å ä»ç»æå®ç°æ¥è®²ï¼HashMapæ¯æ°ç»+é¾è¡¨+çº¢é»æ ï¼JDK1.8å¢å äºçº¢é»æ é¨åï¼å®ç°çãHashMapæå¤åªå è®¸ä¸æ¡è®°å½çé®ä¸ºnullï¼å è®¸å¤æ¡è®°å½çå¼ä¸ºnullãHashMapé线ç¨å®å ¨ãConcurrentHashMap线ç¨å®å ¨ãè§£å³ç¢°æï¼å½åºç°å²çªæ¶ï¼è¿ç¨æé¾æ³ï¼å°å ³é®è¯ä¸ºåä¹è¯çç»ç¹é¾æ¥å¨ä¸ä¸ªåé¾è¡¨ä¸ï¼æ£å表é¿mï¼åå®ä¹ä¸ä¸ªç±m个头æéç»æçæéæ°ç»Tï¼å°å为içç»ç¹æå ¥ä»¥T(i)为头æéçåé¾è¡¨ä¸ãJava8ä¸ï¼å²çªçå ç´ è¶ è¿éå¶ï¼8ï¼ï¼ç¨çº¢é»æ æ¿æ¢é¾è¡¨ã #### 6.è§£éJava 8-ä¸é´æä½ä¸ç»ç«¯æä½ï¼ æµæä½å¯ä»¥å为两é¨åï¼ ä¸é´æä½ -è¿åå¦ä¸ä¸ªStreamçä¸é´æä½ï¼å 许æä½ä»¥æ¥è¯¢çå½¢å¼è¿æ¥ã ç»ç«¯æä½ -产çéæµï¼ç»æå¦åå§å¼ï¼éåææ ¹æ¬æ²¡æå¼ã #### 7.ä»ä¹æ¯Lambda表达å¼ï¼ Lambda Expressionå¯ä»¥å®ä¹ä¸ºå è®¸ç¨æ·å°æ¹æ³ä½ä¸ºåæ°ä¼ éçå¿å彿°ãè¿æå©äºå é¤å¤§éçæ ·æ¿ä»£ç ãLambda彿°æ²¡æè®¿é®ä¿®é¥°ç¬¦ï¼ç§æï¼å ¬å ±æåä¿æ¤ï¼ï¼æ²¡æè¿åç±»å声æå没æåç§°ã Lambda表达å¼å è®¸ç¨æ·å°â彿°âä¼ éç»ä»£ç ãæä»¥ï¼ä¸ä»¥åéè¦ä¸æ´å¥çæ¥å£/æ½è±¡ç±»æ³å¿ ï¼æä»¬å¯ä»¥æ´å®¹æå°ç¼å代ç ãä¾å¦ï¼å设æä»¬ç代ç å ·æä¸äºå¤æç循ç¯/æ¡ä»¶é»è¾æå·¥ä½æµç¨ã使ç¨lambda表达å¼ï¼å¨é£äºæé¾åº¦çå°æ¹ï¼å¯ä»¥å¾å°å¾å¥½çè§£å³ã #### 8.Lambda彿°çä¼ç¹ï¼ ç´å°Java 8å表åéåé常ç±å®¢æ·ç«¯ä»£ç ä»éåä¸è·åè¿ä»£å¨æ¥å¤çï¼ç¶å使ç¨å®è¿ä»£å ¶å ç´ å¹¶ä¾æ¬¡å¤çæ¯ä¸ªå ç´ ã妿è¦å¹¶è¡å¤çä¸åçå ç´ ï¼é£ä¹å®¢æ·ä»£ç è䏿¯éåç责任就æ¯ç»ç»å®ã éè¿Java 8ï¼å¯ä»¥æ´è½»æ¾å°å¨å¤ä¸ªçº¿ç¨ä¸ååéåçå¤çã éåç°å¨å¯ä»¥å¨å é¨ç»ç»èªå·±çè¿ä»£ï¼å°å¹¶è¡åç责任ä»å®¢æ·ç«¯ä»£ç 转移å°åºä»£ç ä¸ã æ´å°ç代ç è¡ãå¦ä¸æè¿°ï¼ç¨æ·å¿ é¡»ä» ä»¥å£°ææ¹å¼å£°æè¦æ§è¡çæä½ã n > System.out.printlnï¼âHello Worldâ+ nï¼; æä»¥ç¨æ·å¿ é¡»é®å ¥åå°ç代ç éã 使ç¨Java 8 Lambda表达å¼å¯ä»¥å®ç°æ´é«çæçãéè¿ä½¿ç¨å ·æå¤æ ¸çCPUï¼ç¨æ·å¯ä»¥éè¿ä½¿ç¨lambdaå¹¶è¡å¤çé忥å©ç¨å¤æ ¸CPUã #### 9.ä»ä¹æ¯Java8ä¸çMetaSpaceï¼å®ä¸PermGen Spaceæä½ä¸åï¼ ä½¿ç¨JDK8æ¶ï¼permGen空é´å·²è¢«å é¤ãé£ä¹ç°å¨å°å æ°æ®ä¿¡æ¯åå¨å¨åªéï¼æ¤å æ°æ®ç°å¨åå¨å¨æ¬æºå åä¸ï¼ç§°ä¸ºâMetaSpaceâã该å å䏿¯è¿ç»çJavaå å åãå®å 许éè¿å徿¶éï¼èªå¨è°æ´ï¼å æ°æ®å¹¶åè§£é¤åé æ¥æ¹è¿PermGen空é´ã #### 10.æ¯ä»ä¹ä½¿Java SE 8ä¼äºå ¶ä»ï¼ Java SE 8å ·æä»¥ä¸åè½ï¼ä½¿å ¶ä¼äºå ¶ä»åè½ï¼ å®ç¼åå¹¶è¡ä»£ç ã宿ä¾äºæ´å¤å¯ç¨ç代ç ãå®å ·ææ¹è¿çæ§è½åºç¨ç¨åºãå®å ·ææ´æè¯»åç®æ´ç代ç ã宿¯æç¼åå å«ä¿éçæ°æ®åºã #### 11.Lambda表达å¼çåæ°å表ä¸Lambdaç®å¤´è¿ç®ç¬¦æä½ä¸åï¼ Lambda表达å¼å¯ä»¥ä¸æ¬¡æºå¸¦é¶ä¸ªï¼ä¸ä¸ªæçè³å¤ä¸ªåæ°ãå¦ä¸æ¹é¢ï¼Lambdaç®å¤´è¿ç®ç¬¦ä½¿ç¨å¾æ â->âå°è¿äºåæ°ä»å表å主ä½ä¸åç¦»åºæ¥ã #### åè龿¥ https://blog.csdn.net/qq_37891300/article/details/82817900 https://blog.csdn.net/pzq915981048/article/details/89011881 https://www.cnblogs.com/jobbible/archive/2019/02/14/10374405.html