--- category: - æ±èé¢è¯ tag: - è诵çå «è¡æ --- # Java åºç¡å «è¡æï¼è诵çï¼å¿ ç:+1: ### Java è¯è¨å ·æåªäºç¹ç¹ï¼ - Java 为纯é¢å对象çè¯è¨ãå®è½å¤ç´æ¥ååºç°å®çæ´»ä¸ç对象ã - å ·æå¹³å°æ å ³æ§ãJava å©ç¨ Java èææºè¿è¡åèç ï¼æ 论æ¯å¨ WindowsãLinux è¿æ¯ MacOS çå ¶å®å¹³å°å¯¹ Java ç¨åºè¿è¡ç¼è¯ï¼ç¼è¯åçç¨åºå¯å¨å ¶å®å¹³å°è¿è¡ã - Java 为解éåè¯è¨ï¼ç¼è¯å¨æ Java 代ç ç¼è¯æå¹³å°æ å ³çä¸é´ä»£ç ï¼ç¶åå¨ JVM ä¸è§£éè¿è¡ï¼å ·æå¾å¥½çå¯ç§»æ¤æ§ã - Java æä¾äºå¾å¤å 置类åºãå¦å¯¹å¤çº¿ç¨æ¯æï¼å¯¹ç½ç»éä¿¡æ¯æï¼æéè¦çä¸ç¹æ¯æä¾äºåå¾åæ¶å¨ã - Java å ·æè¾å¥½çå®å ¨æ§åå¥å£®æ§ãJava æä¾äºå¼å¸¸å¤çååå¾åæ¶æºå¶ï¼å»é¤äº C++ä¸é¾ä»¥çè§£çæéç¹æ§ã ### JDK ä¸ JRE æä»ä¹åºå«ï¼ - JDKï¼Java å¼åå·¥å ·å ï¼Java Development Kitï¼ï¼æä¾äº Java çå¼åç¯å¢åè¿è¡ç¯å¢ã - JREï¼Java è¿è¡ç¯å¢(Java Runtime Environment)ï¼æä¾äº Java è¿è¡æéçç¯å¢ã - JDK å å«äº JREã妿åªè¿è¡ Java ç¨åºï¼å®è£ JRE å³å¯ãè¦ç¼å Java ç¨åºéå®è£ JDK. ### ç®è¿° Java åºæ¬æ°æ®ç±»å - byte: å ç¨ 1 个åèï¼åå¼èå´-128 ~ 127 - short: å ç¨ 2 个åèï¼åå¼èå´-2^15^ ~ 2^15^-1 - intï¼å ç¨ 4 个åèï¼åå¼èå´-2^31^ ~ 2^31^-1 - longï¼å ç¨ 8 个åè - floatï¼å ç¨ 4 个åè - doubleï¼å ç¨ 8 个åè - char: å ç¨ 2 个åè - booleanï¼å ç¨å¤§å°æ ¹æ®å®ç°èææºä¸åææå·®å¼ ### ç®è¿°èªå¨è£ ç®±æç®± å¯¹äº Java åºæ¬æ°æ®ç±»åï¼å对åºä¸ä¸ªå è£ ç±»ã è£ ç®±å°±æ¯èªå¨å°åºæ¬æ°æ®ç±»å转æ¢ä¸ºå è£ å¨ç±»åï¼å¦ int->Integer æç®±å°±æ¯èªå¨å°å è£ å¨ç±»å转æ¢ä¸ºåºæ¬æ°æ®ç±»åï¼å¦ Integer->int ### ç®è¿° Java 访é®ä¿®é¥°ç¬¦ - default: é»è®¤è®¿é®ä¿®é¥°ç¬¦ï¼å¨åä¸å å å¯è§ - private: å¨åä¸ç±»å å¯è§ï¼ä¸è½ä¿®é¥°ç±» - protected : 对åä¸å å çç±»åææåç±»å¯è§ï¼ä¸è½ä¿®é¥°ç±» - public: 对ææç±»å¯è§ ### æé æ¹æ³ãæååéåå§å以åéææååéä¸è çåå§å顺åºï¼ å å顺åºï¼éææååéãæååéãæé æ¹æ³ã 详ç»çå å顺åºï¼ç¶ç±»éæåéãç¶ç±»éæä»£ç åãåç±»éæåéãåç±»éæä»£ç åãç¶ç±»ééæåéãç¶ç±»ééæä»£ç åãç¶ç±»æé 彿°ãåç±»ééæåéãåç±»ééæä»£ç åãåç±»æé 彿°ã ### Java 代ç åæ§è¡é¡ºåº - ç¶ç±»éæä»£ç åï¼åªæ§è¡ä¸æ¬¡ï¼ - åç±»éæä»£ç åï¼åªæ§è¡ä¸æ¬¡ï¼ - ç¶ç±»æé 代ç å - ç¶ç±»æé 彿° - åç±»æé 代ç å - åç±»æé 彿° - æ®é代ç å ### é¢å对象çä¸å¤§ç¹æ§ï¼ ç»§æ¿ï¼å¯¹è±¡çä¸ä¸ªæ°ç±»å¯ä»¥ä»ç°æçç±»ä¸æ´¾çï¼æ´¾çç±»å¯ä»¥ä»å®çåºç±»é£ç»§æ¿æ¹æ³åå®ä¾åéï¼ä¸æ´¾çç±»å¯ä»¥ä¿®æ¹ææ°å¢æ°çæ¹æ³ä½¿ä¹æ´éåç¹æ®çéæ±ã å°è£ ï¼å°å®¢è§äºç©æ½è±¡æç±»ï¼æ¯ä¸ªç±»å¯ä»¥æèªèº«æ°æ®åæ¹æ³åªè®©å¯ä¿¡çç±»æå¯¹è±¡æä½ï¼å¯¹ä¸å¯ä¿¡çè¿è¡ä¿¡æ¯éèã 夿ï¼å 许ä¸åç±»ç对象对å䏿¶æ¯ä½åºååºãä¸å对象è°ç¨ç¸åæ¹æ³å³ä½¿åæ°ä¹ç¸åï¼æç»è¡¨ç°è¡ä¸ºæ¯ä¸ä¸æ ·çã ### 为ä»ä¹ Java è¯è¨ä¸æ¯æå¤éç»§æ¿ï¼ 为äºç¨åºçç»æè½å¤æ´å æ¸ æ°ä»è便äºç»´æ¤ãå设 Java è¯è¨æ¯æå¤éç»§æ¿ï¼ç±» C ç»§æ¿èªç±» A åç±» Bï¼å¦æç±» A å B 齿èªå®ä¹çæåæ¹æ³ `f()`ï¼é£ä¹å½ä»£ç ä¸è°ç¨ç±» C ç `f()` ä¼äº§çäºä¹æ§ã Java è¯è¨éè¿å®ç°å¤ä¸ªæ¥å£é´æ¥æ¯æå¤éç»§æ¿ï¼æ¥å£ç±äºåªå 嫿¹æ³å®ä¹ï¼ä¸è½ææ¹æ³çå®ç°ï¼ç±» C ç»§æ¿æ¥å£ A 䏿¥å£ B æ¶å³ä½¿å®ä»¬é½ææ¹æ³`f()`ï¼ä¹ä¸è½ç´æ¥è°ç¨æ¹æ³ï¼éå®ç°å ·ä½ç`f()`æ¹æ³æè½è°ç¨ï¼ä¸ä¼äº§çäºä¹æ§ã å¤éç»§æ¿ä¼ä½¿ç±»å转æ¢ãæé æ¹æ³çè°ç¨é¡ºåºåå¾å¤æï¼ä¼å½±åå°æ§è½ã ### ç®è¿° Java ç夿 Java 夿å¯ä»¥å为ç¼è¯æ¶å¤æåè¿è¡æ¶å¤æã ç¼è¯æ¶å¤æä¸»è¦ææ¹æ³çéè½½ï¼å³éè¿åæ°å表çä¸åæ¥åºåä¸åçæ¹æ³ã è¿è¡æ¶å¤æä¸»è¦æç»§æ¿ç¶ç±»åå®ç°æ¥å£æ¶ï¼å¯ä½¿ç¨ç¶ç±»å¼ç¨æåå类对象ã è¿è¡æ¶å¤æçå®ç°ï¼ä¸»è¦ä¾é æ¹æ³è¡¨ï¼æ¹æ³è¡¨ä¸æå åæ¾çæ¯ Object ç±»çæ¹æ³ï¼æ¥ä¸æ¥æ¯è¯¥ç±»çç¶ç±»çæ¹æ³ï¼æåæ¯è¯¥ç±»æ¬èº«çæ¹æ³ã妿åç±»æ¹åäºç¶ç±»çæ¹æ³ï¼é£ä¹åç±»åç¶ç±»çé£äºååæ¹æ³å ±äº«ä¸ä¸ªæ¹æ³è¡¨é¡¹ï¼é½è¢«è®¤ä½æ¯ç¶ç±»çæ¹æ³ãå æ¤å¯ä»¥å®ç°è¿è¡æ¶å¤æã ### Java æä¾ç夿æºå¶ï¼ Java æä¾äºä¸¤ç§ç¨äºå¤æçæºå¶ï¼å嫿¯éè½½ä¸è¦çã éè½½ï¼éè½½æ¯æåä¸ä¸ªç±»ä¸æå¤ä¸ªååçæ¹æ³ï¼ä½è¿äºæ¹æ³æä¸åçåæ°ï¼å¨ç¼è¯æé´å°±å¯ä»¥ç¡®å®è°ç¨åªä¸ªæ¹æ³ã è¦çï¼è¦çæ¯ææ´¾çç±»éååºç±»çæ¹æ³ï¼ä½¿ç¨åºç±»æåå ¶åç±»çå®ä¾å¯¹è±¡ï¼ææ¥å£çå¼ç¨åéæåå ¶å®ç°ç±»çå®ä¾å¯¹è±¡ï¼å¨ç¨åºè°ç¨çè¿è¡ææ ¹æ®å¼ç¨åéææçå ·ä½å®ä¾å¯¹è±¡è°ç¨æ£å¨è¿è¡çé£ä¸ªå¯¹è±¡çæ¹æ³ï¼å³éè¦å°è¿è¡ææè½ç¡®å®è°ç¨åªä¸ªæ¹æ³ã ### éè½½ä¸è¦ççåºå«ï¼ - è¦çæ¯ç¶ç±»ä¸åç±»ä¹é´çå ³ç³»ï¼æ¯åç´å ³ç³»ï¼éè½½æ¯åä¸ç±»ä¸æ¹æ³ä¹é´çå ³ç³»ï¼æ¯æ°´å¹³å ³ç³»ã - è¦çåªè½ç±ä¸ä¸ªæ¹æ³æä¸å¯¹æ¹æ³äº§çå ³ç³»ï¼éè½½æ¯å¤ä¸ªæ¹æ³ä¹é´çå ³ç³»ã - è¦çè¦æ±åæ°å表ç¸åï¼éè½½è¦æ±åæ°å表ä¸åã - è¦çä¸ï¼è°ç¨æ¹æ³ä½æ¯æ ¹æ®å¯¹è±¡çç±»åæ¥å³å®çï¼èéè½½æ¯æ ¹æ®è°ç¨æ¶å®å表ä¸å½¢å表æ¥å¯¹åºéæ©æ¹æ³ä½ã - éè½½æ¹æ³å¯ä»¥æ¹åè¿åå¼çç±»åï¼è¦çæ¹æ³ä¸è½æ¹åè¿åå¼çç±»åã ### æ¥å£åæ½è±¡ç±»çç¸åç¹åä¸åç¹ï¼ ç¸åç¹: - é½ä¸è½è¢«å®ä¾åã - æ¥å£çå®ç°ç±»ææ½è±¡ç±»çåç±»éå®ç°æ¥å£ææ½è±¡ç±»ä¸ç¸åºçæ¹æ³æè½è¢«å®ä¾åã ä¸åç¹ï¼ - æ¥å£åªè½ææ¹æ³å®ä¹ï¼ä¸è½ææ¹æ³çå®ç°ï¼èæ½è±¡ç±»å¯ä»¥ææ¹æ³çå®ä¹ä¸å®ç°ã - å®ç°æ¥å£çå ³é®å为 implementsï¼ç»§æ¿æ½è±¡ç±»çå ³é®å为 extendsãä¸ä¸ªç±»å¯ä»¥å®ç°å¤ä¸ªæ¥å£ï¼åªè½ç»§æ¿ä¸ä¸ªæ½è±¡ç±»ã - å½åç±»åç¶ç±»ä¹é´åå¨é»è¾ä¸ç屿¬¡ç»æï¼æ¨èä½¿ç¨æ½è±¡ç±»ï¼æå©äºåè½ç累积ãå½åè½ä¸éè¦ï¼å¸ææ¯æå·®å«è¾å¤§çä¸¤ä¸ªææ´å¤å¯¹è±¡é´çç¹å®äº¤äºè¡ä¸ºï¼æ¨èä½¿ç¨æ¥å£ãä½¿ç¨æ¥å£è½éä½è½¯ä»¶ç³»ç»çè¦å度ï¼ä¾¿äºæ¥åç»´æ¤ææ·»å å 餿¹æ³ã ### ç®è¿°æ½è±¡ç±»ä¸æ¥å£çåºå« æ½è±¡ç±»ï¼ä½ç°çæ¯ is-a çå ³ç³»ï¼å¦å¯¹äº man is a personï¼å°±å¯ä»¥å° person å®ä¹ä¸ºæ½è±¡ç±»ã æ¥å£ï¼ä½ç°çæ¯ can çå ³ç³»ãæ¯ä½ä¸ºæ¨¡æ¿å®ç°çãå¦è®¾ç½®æ¥å£ flyï¼plane ç±»å bird ç±»åå¯å®ç°è¯¥æ¥å£ã ä¸ä¸ªç±»åªè½ç»§æ¿ä¸ä¸ªæ½è±¡ç±»ï¼ä½å¯ä»¥å®ç°å¤ä¸ªæ¥å£ã ### ç®è¿°å é¨ç±»åå ¶ä½ç¨ - æåå é¨ç±»ï¼ä½ä¸ºæå对象çå é¨ç±»ãå¯ä»¥è®¿é® private å以ä¸å¤é¨ç±»ç屿§åæ¹æ³ãå¤é¨ç±»æ³è¦è®¿é®å é¨ç±»å±æ§ææ¹æ³æ¶ï¼å¿ é¡»è¦å建ä¸ä¸ªå é¨ç±»å¯¹è±¡ï¼ç¶åéè¿è¯¥å¯¹è±¡è®¿é®å é¨ç±»ç屿§ææ¹æ³ãå¤é¨ç±»ä¹å¯è®¿é® private 修饰çå é¨ç±»å±æ§ã - å±é¨å é¨ç±»ï¼åå¨äºæ¹æ³ä¸çå é¨ç±»ãè®¿é®æé类似å±é¨åéï¼åªè½è®¿é®å¤é¨ç±»ç final åéã - å¿åå é¨ç±»ï¼åªè½ä½¿ç¨ä¸æ¬¡ï¼æ²¡æç±»åï¼åªè½è®¿é®å¤é¨ç±»ç final åéã - éæå é¨ç±»ï¼ç±»ä¼¼ç±»çéææååéã ### Java è¯è¨ä¸å ³é®å static çä½ç¨æ¯ä»ä¹ï¼ static ç主è¦ä½ç¨æä¸¤ä¸ªï¼ - 为æç§ç¹å®æ°æ®ç±»åæå¯¹è±¡åé ä¸åå»ºå¯¹è±¡ä¸ªæ°æ å ³çåä¸çåå¨ç©ºé´ã - ä½¿å¾æä¸ªæ¹æ³æå±æ§ä¸ç±»è䏿¯å¯¹è±¡å ³èå¨ä¸èµ·ï¼å³å¨ä¸åå»ºå¯¹è±¡çæ åµä¸å¯éè¿ç±»ç´æ¥è°ç¨æ¹æ³æä½¿ç¨ç±»ç屿§ã å ·ä½èè¨ static åå¯å为 4 ç§ä½¿ç¨æ¹å¼ï¼ - 修饰æååéãç¨ static å ³é®å修饰çéæåéå¨å åä¸åªæä¸ä¸ªå¯æ¬ãåªè¦éæåéæå¨ç类被å è½½ï¼è¿ä¸ªéæåéå°±ä¼è¢«åé 空é´ï¼å¯ä»¥ä½¿ç¨âç±».éæåéâåâ对象.éæåéâçæ¹æ³ä½¿ç¨ã - 修饰æåæ¹æ³ãstatic ä¿®é¥°çæ¹æ³æ éå建对象就å¯ä»¥è¢«è°ç¨ãstatic æ¹æ³ä¸ä¸è½ä½¿ç¨ this å super å ³é®åï¼ä¸è½è°ç¨é static æ¹æ³ï¼åªè½è®¿é®æå±ç±»çéææååéåéææåæ¹æ³ã - 修饰代ç åãJVM å¨å è½½ç±»çæ¶å伿§è¡ static 代ç åãstatic 代ç å常ç¨äºåå§åéæåéãstatic 代ç ååªä¼è¢«æ§è¡ä¸æ¬¡ã - 修饰å é¨ç±»ãstatic å é¨ç±»å¯ä»¥ä¸ä¾èµå¤é¨ç±»å®ä¾å¯¹è±¡è被å®ä¾åãéæå é¨ç±»ä¸è½ä¸å¤é¨ç±»æç¸åçååï¼ä¸è½è®¿é®æ®éæååéï¼åªè½è®¿é®å¤é¨ç±»ä¸çéææååéææåæ¹æ³ã ### 为ä»ä¹è¦æ String 设计为ä¸å¯åï¼ - èç空é´ï¼å符串常éåå¨å¨ JVM çåç¬¦ä¸²æ± ä¸å¯ä»¥è¢«ç¨æ·å ±äº«ã - æé«æçï¼String å¯ä»¥è¢«ä¸å线ç¨å ±äº«ï¼æ¯çº¿ç¨å®å ¨çã卿¶åå¤çº¿ç¨æä½ä¸ä¸éè¦åæ¥æä½ã - å®å ¨ï¼String 常被ç¨äºç¨æ·åãå¯ç ãæä»¶åç使ç¨ï¼ç±äºå ¶ä¸å¯åï¼å¯é¿å é»å®¢è¡ä¸ºå¯¹å ¶æ¶æä¿®æ¹ã ### ç®è¿° String/StringBuffer ä¸ StringBuilder String ç±»éç¨å©ç¨ final 修饰çå符æ°ç»è¿è¡å符串ä¿åï¼å æ¤ä¸å¯åã妿坹 String ç±»å对象修æ¹ï¼éè¦æ°å»ºå¯¹è±¡ï¼å°èåç¬¦åæ°å¢å çå符ä¸å¹¶åè¿å»ã StringBuilderï¼éç¨æ final 修饰çå符æ°ç»è¿è¡ä¿åï¼å æ¤å¯åãä½çº¿ç¨ä¸å®å ¨ã StringBufferï¼éç¨æ final 修饰çå符æ°ç»è¿è¡ä¿åï¼å¯ç解为å®ç°çº¿ç¨å®å ¨ç StringBuilderã ### å¤çè¿ç®ç¬¦==ä¸ equals çåºå«ï¼ == æ¯è¾çæ¯å¼ç¨ï¼equals æ¯è¾çæ¯å 容ã 妿å鿝åºç¡æ°æ®ç±»åï¼== ç¨äºæ¯è¾å ¶å¯¹åºå¼æ¯å¦ç¸çã妿åéæåçæ¯å¯¹è±¡ï¼== ç¨äºæ¯è¾ä¸¤ä¸ªå¯¹è±¡æ¯å¦æååä¸ååå¨ç©ºé´ã equals æ¯ Object ç±»æä¾çæ¹æ³ä¹ä¸ï¼æ¯ä¸ª Java ç±»é½ç»§æ¿èª Object ç±»ï¼æä»¥æ¯ä¸ªå¯¹è±¡é½å ·æ equals è¿ä¸ªæ¹æ³ãObject ç±»ä¸å®ä¹ç equals æ¹æ³å 鍿¯ç´æ¥è°ç¨ == æ¯è¾å¯¹è±¡çãä½éè¿è¦ççæ¹æ³å¯ä»¥è®©å®ä¸æ¯æ¯è¾å¼ç¨èæ¯æ¯è¾æ°æ®å 容ã ### ç®è¿° Object ç±»å¸¸ç¨æ¹æ³ - hashCodeï¼éè¿å¯¹è±¡è®¡ç®åºçæ£åç ãç¨äº map åæ equals æ¹æ³ãéè¦ä¿è¯åä¸ä¸ªå¯¹è±¡å¤æ¬¡è°ç¨è¯¥æ¹æ³ï¼æ»è¿åç¸åçæ´åå¼ã - equalsï¼å¤æä¸¤ä¸ªå¯¹è±¡æ¯å¦ä¸è´ãéä¿è¯ equals æ¹æ³ç¸å对åºç对象 hashCode ä¹ç¸åã - toString: ç¨å符串表示该对象 - clone:æ·±æ·è´ä¸ä¸ªå¯¹è±¡ ### Java ä¸ä¸ç»´æ°ç»åäºç»´æ°ç»çå£°ææ¹å¼ï¼ ä¸ç»´æ°ç»çå£°ææ¹å¼ï¼ ```java type arrayName[] type[] arrayName ``` äºç»´æ°ç»çå£°ææ¹å¼ï¼ ```java type arrayName[][] type[][] arrayName type[] arrayName[] ``` å ¶ä¸ type ä¸ºåºæ¬æ°æ®ç±»åæç±»ï¼arrayName 为æ°ç»åå ### ç®è¿° Java å¼å¸¸çåç±» Java å¼å¸¸å为 Errorï¼ç¨åºæ æ³å¤ççé误ï¼ï¼å Exceptionï¼ç¨åºæ¬èº«å¯ä»¥å¤ççå¼å¸¸ï¼ãè¿ä¸¤ä¸ªç±»åç»§æ¿ Throwableã Error 常è§çæ StackOverFlowErrorãOutOfMemoryError ççã Exception å¯å为è¿è¡æ¶å¼å¸¸åéè¿è¡æ¶å¼å¸¸ã对äºè¿è¡æ¶å¼å¸¸ï¼å¯ä»¥å©ç¨ try catch çæ¹å¼è¿è¡å¤çï¼ä¹å¯ä»¥ä¸å¤çã对äºéè¿è¡æ¶å¼å¸¸ï¼å¿ é¡»å¤çï¼ä¸å¤ççè¯ç¨åºæ æ³éè¿ç¼è¯ã ### ç®è¿° throw ä¸ throws çåºå« throw ä¸è¬æ¯ç¨å¨æ¹æ³ä½çå é¨ï¼ç±å¼åè å®ä¹å½ç¨åºè¯å¥åºç°é®é¢å䏻卿åºä¸ä¸ªå¼å¸¸ã throws ä¸è¬ç¨äºæ¹æ³å£°æä¸ï¼ä»£è¡¨è¯¥æ¹æ³å¯è½ä¼æåºçå¼å¸¸å表ã ### åºç°å¨ Java ç¨åºä¸ç finally 代ç 忝å¦ä¸å®ä¼æ§è¡ï¼ å½éå°ä¸é¢æ åµä¸ä¼æ§è¡ã - å½ç¨åºå¨è¿å ¥ try è¯å¥åä¹åå°±åºç°å¼å¸¸æ¶ä¼ç´æ¥ç»æã - å½ç¨åºå¨ try åä¸å¼ºå¶éåºæ¶ï¼å¦ä½¿ç¨ System.exit(0)ï¼ä¹ä¸ä¼æ§è¡ finally åä¸ç代ç ã å ¶å®æ åµä¸ï¼å¨ try/catch/finally è¯å¥æ§è¡çæ¶åï¼try åå æ§è¡ï¼å½æå¼å¸¸åçï¼catch å finally è¿è¡å¤çåç¨åºå°±ç»æäºï¼å½æ²¡æå¼å¸¸åçï¼å¨æ§è¡å® finally ä¸ç代ç åï¼åé¢ä»£ç ä¼ç»§ç»æ§è¡ãå¼å¾æ³¨æçæ¯ï¼å½ try/catch è¯å¥å䏿 return æ¶ï¼finally è¯å¥åä¸ç代ç ä¼å¨ return ä¹åæ§è¡ã妿 try/catch/finally åä¸é½æ return è¯å¥ï¼finally åä¸ç return è¯å¥ä¼è¦ç try/catch 模åä¸ç return è¯å¥ã ### finalãfinally å finalize çåºå«æ¯ä»ä¹ï¼ - final ç¨äºå£°æå±æ§ãæ¹æ³åç±»ï¼åå«è¡¨ç¤ºå±æ§ä¸å¯åãæ¹æ³ä¸å¯è¦çãç±»ä¸å¯ç»§æ¿ã - finally ä½ä¸ºå¼å¸¸å¤ççä¸é¨åï¼åªè½å¨ try/catch è¯å¥ä¸ä½¿ç¨ï¼finally é带ä¸ä¸ªè¯å¥åç¨æ¥è¡¨ç¤ºè¿ä¸ªè¯å¥æç»ä¸å®è¢«æ§è¡ï¼ç»å¸¸è¢«ç¨å¨éè¦éæ¾èµæºçæ åµä¸ã - finalize æ¯ Object ç±»çä¸ä¸ªæ¹æ³ï¼å¨å徿¶é卿§è¡çæ¶åä¼è°ç¨è¢«åæ¶å¯¹è±¡ç finalize()æ¹æ³ãå½åå¾åæ¶å¨åå¤å¥½éæ¾å¯¹è±¡å ç¨ç©ºé´æ¶ï¼é¦å ä¼è°ç¨ finalize()æ¹æ³ï¼å¹¶å¨ä¸ä¸æ¬¡åå¾åæ¶å¨ä½åçæ¶çæ£åæ¶å¯¹è±¡å ç¨çå åã ### ç®è¿°æ³å æ³åï¼å³âåæ°åç±»åâï¼è§£å³ä¸ç¡®å®å¯¹è±¡å ·ä½ç±»åçé®é¢ãå¨ç¼è¯é¶æ®µææã卿³å使ç¨è¿ç¨ä¸ï¼æä½çæ°æ®ç±»å被æå®ä¸ºä¸ä¸ªåæ°ï¼è¿ç§åæ°ç±»åå¨ç±»ä¸ç§°ä¸ºæ³åç±»ãæ¥å£ä¸ç§°ä¸ºæ³åæ¥å£åæ¹æ³ä¸ç§°ä¸ºæ³åæ¹æ³ã ### ç®è¿°æ³åæ¦é¤ Java ç¼è¯å¨çæçåèç æ¯ä¸å æ¶µæ³åä¿¡æ¯çï¼æ³åç±»åä¿¡æ¯å°å¨ç¼è¯å¤çæ¯è¢«æ¦é¤ï¼è¿ä¸ªè¿ç¨è¢«ç§°ä¸ºæ³åæ¦é¤ã ### ç®è¿°æ³¨è§£ Java 注解ç¨äºä¸º Java ä»£ç æä¾å æ°æ®ãä½ä¸ºå æ°æ®ï¼æ³¨è§£ä¸ç´æ¥å½±åä½ çä»£ç æ§è¡ï¼ä½ä¹æä¸äºç±»åçæ³¨è§£å®é ä¸å¯ä»¥ç¨äºè¿ä¸ç®çã å ¶å¯ä»¥ç¨äºæä¾ä¿¡æ¯ç»ç¼è¯å¨ï¼å¨ç¼è¯é¶æ®µæ¶ç»è½¯ä»¶æä¾ä¿¡æ¯è¿è¡ç¸å ³çå¤çï¼å¨è¿è¡æ¶å¤çåç¸åºä»£ç ï¼åå¯¹åºæä½ã ### ç®è¿°å 注解 å æ³¨è§£å¯ä»¥çè§£ä¸ºæ³¨è§£çæ³¨è§£ï¼å³å¨æ³¨è§£ä¸ä½¿ç¨ï¼å®ç°æ³è¦çåè½ãå ¶å ·ä½åä¸ºï¼ - @Retention: 表示注解åå¨é¶æ®µæ¯ä¿ç卿ºç ï¼è¿æ¯å¨åèç ï¼ç±»å è½½ï¼æè è¿è¡æï¼JVM ä¸è¿è¡ï¼ã - @Targetï¼è¡¨ç¤ºæ³¨è§£ä½ç¨çèå´ã - @Documentedï¼å°æ³¨è§£ä¸çå ç´ å å«å° Javadoc ä¸å»ã - @Inheritedï¼ä¸ä¸ªè¢«@Inherited 注解äºç注解修饰äºä¸ä¸ªç¶ç±»ï¼å¦æä»çå类没æè¢«å ¶ä»æ³¨è§£ä¿®é¥°ï¼åå®çåç±»ä¹ç»§æ¿äºç¶ç±»ç注解ã - @Repeatableï¼è¢«è¿ä¸ªå æ³¨è§£ä¿®é¥°çæ³¨è§£å¯ä»¥åæ¶ä½ç¨ä¸ä¸ªå¯¹è±¡å¤æ¬¡ï¼ä½æ¯æ¯æ¬¡ä½ç¨æ³¨è§£åå¯ä»¥ä»£è¡¨ä¸åçå«ä¹ã ### ç®è¿° Java ä¸ Class 对象 java ä¸å¯¹è±¡å¯ä»¥å为å®ä¾å¯¹è±¡å Class å¯¹è±¡ï¼æ¯ä¸ä¸ªç±»é½æä¸ä¸ª Class 对象ï¼å ¶å å«äºä¸è¯¥ç±»æå ³çä¿¡æ¯ã è·å Class å¯¹è±¡çæ¹æ³ï¼ ```java Class.forName(âç±»çå ¨éå®åâ) å®ä¾å¯¹è±¡.getClass() ç±»å.class ``` ### Java åå°æºå¶æ¯ä»ä¹ï¼ Java åå°æºå¶æ¯æå¨ç¨åºçè¿è¡è¿ç¨ä¸å¯ä»¥æé ä»»æä¸ä¸ªç±»ç对象ãè·åä»»æä¸ä¸ªç±»çæååéåæåæ¹æ³ãè·åä»»æä¸ä¸ªå¯¹è±¡æå±ç类信æ¯ãè°ç¨ä»»æä¸ä¸ªå¯¹è±¡ç屿§åæ¹æ³ãåå°æºå¶ä½¿å¾ Java å ·æå¨æè·åç¨åºä¿¡æ¯å卿è°ç¨å¯¹è±¡æ¹æ³çè½åãå¯ä»¥éè¿ä»¥ä¸ç±»è°ç¨åå° APIã - Class ç±»ï¼å¯è·å¾ç±»å±æ§æ¹æ³ - Field ç±»ï¼è·å¾ç±»çæååé - Method ç±»ï¼è·åç±»çæ¹æ³ä¿¡æ¯ - Construct ç±»ï¼è·åç±»çæé æ¹æ³çä¿¡æ¯ ### åºå忝ä»ä¹ï¼ åºå忝ä¸ç§å°å¯¹è±¡è½¬æ¢æåèåºåçè¿ç¨ï¼ç¨äºè§£å³å¨å¯¹å¯¹è±¡æµè¿è¡è¯»åæä½æ¶æå¼åçé®é¢ãåºååå¯ä»¥å°å¯¹è±¡çç¶æå卿µéè¿è¡ç½ç»ä¼ è¾ï¼æè ä¿åå°æä»¶ãæ°æ®åºçç³»ç»éï¼å¹¶å¨éè¦çæ¶åæè¯¥æµè¯»ååºæ¥éæ°æé æä¸ä¸ªç¸åç对象ã ### ç®è¿° Java åºååä¸ååºååçå®ç° åºååï¼å° java 对象转å为åèåºåï¼ç±æ¤å¯ä»¥éè¿ç½ç»å¯¹è±¡è¿è¡ä¼ è¾ã ååºååï¼å°åèåºå转å为 java 对象ã å ·ä½å®ç°ï¼å®ç° Serializable æ¥å£ï¼æå®ç° Externalizable æ¥å£ä¸ç writeExternal()ä¸ readExternal()æ¹æ³ã ### ç®è¿° Java ç List List æ¯ä¸ä¸ªæåºéåï¼å¨ Java 䏿䏤ç§å®ç°æ¹å¼: ArrayList ä½¿ç¨æ°ç»å®ç°ï¼æ¯å®¹éå¯åçé线ç¨å®å ¨å表ï¼éæºè®¿é®å¿«ï¼é忩容æ¶ä¼å建æ´å¤§çæ°ç»ï¼æåææ°ç»å¤å¶å°æ°æ°ç»ã LinkedList æ¬è´¨æ¯ååé¾è¡¨ï¼ä¸ ArrayList ç¸æ¯æå ¥åå é¤é度æ´å¿«ï¼ä½éæºè®¿é®å ç´ å¾æ ¢ã ### Java ä¸çº¿ç¨å®å ¨çåºæ¬æ°æ®ç»ææåªäº - HashTable: åå¸è¡¨ç线ç¨å®å ¨çï¼æçä½ - ConcurrentHashMapï¼åå¸è¡¨ç线ç¨å®å ¨çï¼æçé«ï¼ç¨äºæ¿ä»£ HashTable - Vectorï¼çº¿ç¨å®å ¨ç Arraylist - Stackï¼çº¿ç¨å®å ¨çæ - BlockingQueue åå ¶åç±»ï¼çº¿ç¨å®å ¨çéå ### ç®è¿° Java ç Set Set å³éåï¼è¯¥æ°æ®ç»æä¸å 许å ç´ éå¤ä¸æ åºãJava 对 Set æä¸ç§å®ç°æ¹å¼ï¼ HashSet éè¿ HashMap å®ç°ï¼HashMap ç Key å³ HashSet åå¨çå ç´ ï¼Value ç³»ç»èªå®ä¹ä¸ä¸ªå为 PRESENT ç Object ç±»å常éã夿å ç´ æ¯å¦ç¸åæ¶ï¼å æ¯è¾ hashCodeï¼ç¸åååå©ç¨ equals æ¯è¾ï¼æ¥è¯¢ O(1) LinkedHashSet ç»§æ¿èª HashSetï¼éè¿ LinkedHashMap å®ç°ï¼ä½¿ç¨ååé¾è¡¨ç»´æ¤å ç´ æå ¥é¡ºåºã TreeSet éè¿ TreeMap å®ç°çï¼åºå±æ°æ®ç»ææ¯çº¢é»æ ï¼æ·»å å ç´ å°éåæ¶æç §æ¯è¾è§åå°å ¶æå ¥åéçä½ç½®ï¼ä¿è¯æå ¥åçéåä»ç¶æåºãæ¥è¯¢ O(logn) ### ç®è¿° Java ç HashMap JDK8 ä¹ååºå±å®ç°æ¯æ°ç» + é¾è¡¨ï¼JDK8 æ¹ä¸ºæ°ç» + é¾è¡¨/çº¢é»æ ãä¸»è¦æååéå æ¬å卿°æ®ç table æ°ç»ãå ç´ æ°é sizeãå è½½å å loadFactorãHashMap 䏿°æ®ä»¥é®å¼å¯¹çå½¢å¼åå¨ï¼é®å¯¹åºç hash å¼ç¨æ¥è®¡ç®æ°ç»ä¸æ ï¼å¦æä¸¤ä¸ªå ç´ key ç hash å¼ä¸æ ·ï¼å°±ä¼åçåå¸å²çªï¼è¢«æ¾å°åä¸ä¸ªé¾è¡¨ä¸ã table æ°ç»è®°å½ HashMap çæ°æ®ï¼æ¯ä¸ªä¸æ 对åºä¸æ¡é¾è¡¨ï¼ææåå¸å²çªçæ°æ®é½ä¼è¢«åæ¾å°å䏿¡é¾è¡¨ï¼Node/Entry èç¹å å«å个æååéï¼keyãvalueãnext æéå hash å¼ãå¨ JDK8 åé¾è¡¨è¶ è¿ 8 ä¼è½¬åä¸ºçº¢é»æ ã è¥å½åæ°æ®/æ»æ°æ®å®¹é>è´è½½å åï¼Hashmap å°æ§è¡æ©å®¹æä½ãé»è®¤åå§å容é为 16ï¼æ©å®¹å®¹éå¿ é¡»æ¯ 2 ç广¬¡æ¹ãæå¤§å®¹é为 1<< 30 ãé»è®¤å è½½å å为 0.75ã ### ä¸ºä½ HashMap 线ç¨ä¸å®å ¨ å¨ JDK1.7 ä¸ï¼HashMap éç¨å¤´ææ³æå ¥å ç´ ï¼å æ¤å¹¶åæ åµä¸ä¼å¯¼è´ç¯å½¢é¾è¡¨ï¼äº§çæ»å¾ªç¯ã è½ç¶ JDK1.8 éç¨äºå°¾ææ³è§£å³äºè¿ä¸ªé®é¢ï¼ä½æ¯å¹¶åä¸ç put æä½ä¹ä¼ä½¿åä¸ä¸ª key 被åä¸ä¸ª key è¦çã ç±äº HashMap ææ©å®¹æºå¶åå¨ï¼ä¹åå¨ A 线ç¨è¿è¡æ©å®¹åï¼B çº¿ç¨æ§è¡ get æ¹æ³åºç°å¤±è¯¯çæ åµã ### ç®è¿° Java ç TreeMap TreeMap æ¯åºå±å©ç¨çº¢é»æ å®ç°ç Map ç»æï¼åºå±å®ç°æ¯ä¸æ£µå¹³è¡¡çæåºäºåæ ï¼ç±äºçº¢é»æ çæå ¥ãå é¤ãéåæ¶é´å¤æåº¦é½ä¸º O(logN)ï¼æä»¥æ§è½ä¸ä½äºåå¸è¡¨ã使¯åå¸è¡¨æ æ³æä¾é®å¼å¯¹çæåºè¾åºï¼çº¢é»æ å¯ä»¥æç §é®çå¼ç大尿åºè¾åºã ### ArrayListãVector å LinkedList æä»ä¹å ±åç¹ä¸åºå«ï¼ - ArrayListãVector å LinkedList 齿¯å¯ä¼¸ç¼©çæ°ç»ï¼å³å¯ä»¥å¨ææ¹åé¿åº¦çæ°ç»ã - ArrayList å Vector 齿¯åºäºåå¨å ç´ ç Object[] array æ¥å®ç°çï¼å®ä»¬ä¼å¨å åä¸å¼è¾ä¸åè¿ç»çç©ºé´æ¥åå¨ï¼æ¯æä¸æ ãç´¢å¼è®¿é®ãä½å¨æ¶åæå ¥å ç´ æ¶å¯è½éè¦ç§»å¨å®¹å¨ä¸çå ç´ ï¼æå ¥æçè¾ä½ãå½åå¨å ç´ è¶ è¿å®¹å¨çåå§å容é大å°ï¼ArrayList ä¸ Vector åä¼è¿è¡æ©å®¹ã - Vector æ¯çº¿ç¨å®å ¨çï¼å ¶å¤§é¨åæ¹æ³æ¯ç´æ¥æé´æ¥åæ¥çãArrayList 䏿¯çº¿ç¨å®å ¨çï¼å ¶æ¹æ³ä¸å ·æåæ¥æ§è´¨ãLinkedList ä¹ä¸æ¯çº¿ç¨å®å ¨çã - LinkedList éç¨ååå表å®ç°ï¼å¯¹æ°æ®ç´¢å¼éè¦ä»å¤´å¼å§éåï¼å æ¤éæºè®¿é®æçè¾ä½ï¼ä½å¨æå ¥å ç´ çæ¶åä¸éè¦å¯¹æ°æ®è¿è¡ç§»å¨ï¼æå ¥æçè¾é«ã ### HashMap å Hashtable æä»ä¹åºå«ï¼ - HashMap æ¯ Hashtable çè½»é级å®ç°ï¼HashMap å 许 key å value 为 nullï¼ä½æå¤å è®¸ä¸æ¡è®°å½ç key 为 null.è HashTable ä¸å 许ã - HashTable ä¸çæ¹æ³æ¯çº¿ç¨å®å ¨çï¼è HashMap 䏿¯ãå¨å¤çº¿ç¨è®¿é® HashMap éè¦æä¾é¢å¤ç忥æºå¶ã - Hashtable ä½¿ç¨ Enumeration è¿è¡éåï¼HashMap ä½¿ç¨ Iterator è¿è¡éåã ### å¦ä½å³å®ä½¿ç¨ HashMap è¿æ¯ TreeMap? 妿坹 Map è¿è¡æå ¥ãå 餿å®ä½ä¸ä¸ªå ç´ çæä½æ´é¢ç¹ï¼HashMap æ¯æ´å¥½çéæ©ã妿éè¦å¯¹ key éåè¿è¡æåºçéåï¼TreeMap æ¯æ´å¥½çéæ©ã ### HashSet ä¸ï¼equals ä¸ hashCode ä¹é´çå ³ç³»ï¼ equals å hashCode è¿ä¸¤ä¸ªæ¹æ³é½æ¯ä» object ç±»ä¸ç»§æ¿è¿æ¥çï¼equals 主è¦ç¨äºå¤æå¯¹è±¡çå åå°åå¼ç¨æ¯å¦æ¯åä¸ä¸ªå°åï¼hashCode æ ¹æ®å®ä¹çåå¸è§åå°å¯¹è±¡çå åå°å转æ¢ä¸ºä¸ä¸ªåå¸ç ãHashSet ä¸åå¨çå ç´ æ¯ä¸è½éå¤çï¼ä¸»è¦éè¿ hashCode ä¸ equals ä¸¤ä¸ªæ¹æ³æ¥å¤æåå¨ç对象æ¯å¦ç¸åï¼ - å¦æä¸¤ä¸ªå¯¹è±¡ç hashCode å¼ä¸åï¼è¯´æä¸¤ä¸ªå¯¹è±¡ä¸ç¸åã - å¦æä¸¤ä¸ªå¯¹è±¡ç hashCode å¼ç¸åï¼æ¥çä¼è°ç¨å¯¹è±¡ç equals æ¹æ³ï¼å¦æ equlas æ¹æ³çè¿åç»æä¸º trueï¼é£ä¹è¯´æä¸¤ä¸ªå¯¹è±¡ç¸åï¼å¦åä¸ç¸åã ### fail-fast å fail-safe è¿ä»£å¨çåºå«æ¯ä»ä¹ï¼ - fail-fast ç´æ¥å¨å®¹å¨ä¸è¿è¡ï¼å¨éåè¿ç¨ä¸ï¼ä¸æ¦åç°å®¹å¨ä¸çæ°æ®è¢«ä¿®æ¹ï¼å°±ä¼ç«å»æåº ConcurrentModificationException å¼å¸¸ä»è导è´éå失败ã常è§çä½¿ç¨ fail-fast æ¹å¼ç容卿 HashMap å ArrayList çã - fail-safe è¿ç§éååºäºå®¹å¨çä¸ä¸ªå éãå æ¤å¯¹å®¹å¨ä¸çå 容修æ¹ä¸å½±åéåã常è§çä½¿ç¨ fail-safe æ¹å¼éåç容卿 ConcurrentHashMap å CopyOnWriteArrayListã ### Collection å Collections æä»ä¹åºå«ï¼ - Collection æ¯ä¸ä¸ªé忥å£ï¼å®æä¾äºå¯¹éå对象è¿è¡åºæ¬æä½çéç¨æ¥å£æ¹æ³ï¼ææéå齿¯å®çåç±»ï¼æ¯å¦ ListãSet çã - Collections æ¯ä¸ä¸ªå è£ ç±»ï¼å å«äºå¾å¤éææ¹æ³ãä¸è½è¢«å®ä¾åï¼èæ¯ä½ä¸ºå·¥å ·ç±»ä½¿ç¨ï¼æ¯å¦æä¾çæåºæ¹æ³ï¼Collections.sort(list);æä¾çåè½¬æ¹æ³ï¼Collections.reverse(list)ã --- æç¨¿ä½è ï¼åç«¯ææ¯å°ç说 è½¬è½½é¾æ¥ï¼[https://mp.weixin.qq.com/s/PmeH38qWVxyIhBpsAsjG7w](https://mp.weixin.qq.com/s/PmeH38qWVxyIhBpsAsjG7w) 