### JDKåJREã JVM
- JDKï¼Java Development Kitï¼æ¯ Java å¼åå·¥å
·å
ï¼å
æ¬äº Java è¿è¡ç¯å¢ JREãJava å·¥å
·å Java åºç¡ç±»åºã
- JREï¼Java Runtime Environmentï¼æ¯è¿è¡ Java ç¨åºæå¿
é¡»çç¯å¢çéåï¼å
å« JVM æ åå®ç°å Java æ ¸å¿ç±»åºã
- JVMï¼Java Virtual Machineï¼æ¯ Java èææºç缩åï¼æ¯æ´ä¸ª Java å®ç°è·¨å¹³å°çææ ¸å¿çé¨åï¼è½å¤è¿è¡ä»¥Java è¯è¨åä½ç软件ç¨åºã
### å对象çåºå«
ç±»æ¯ä¸ç±»ç©ä½çå
±åç¹æ§çæ½è±¡.对象æ¯ç±»çä¸ä¸ªå®ä¾.
éä¿ç说:ææä¸ç±»ç©åå
±æçç¹å¾,æè
屿§ç»è£
èµ·æ¥å°±æ¯ä¸ä¸ªç±». è½å¤å
·ä½å°ç©åæè
个ä½å°±æ¯å¯¹è±¡.
### æé æ¹æ³åæ®éæ¹æ³çåºå«
æé 彿°çæ¹æ³ååç±»åç¸åãæ²¡æè¿åå¼ç±»åãä¸è½å returnï¼æ¯ç»å¯¹è±¡åå§åç¨çï¼åå»ºå¯¹è±¡çæ¶åå°±ä¼åå§åï¼æ§è¡å¯ä¸ç䏿¬¡æé æ¹æ³ï¼ç³»ç»ä¼é»è®¤æ·»å ä¸ä¸ªæ åçæé æ¹æ³
æ®éæ¹æ³æ¯å¯¹è±¡è°ç¨æè½æ§è¡ï¼å¯è¢«å¤æ¬¡è°ç¨ã
**æé å¨Constructoræ¯å¦å¯è¢«override**
æé å¨Constructorä¸è½è¢«ç»§æ¿ï¼å æ¤ä¸è½éåOverrideï¼ä½å¯ä»¥è¢«éè½½Overloadã
### ä½ç¨åpublicï¼privateï¼protectedï¼ä»¥åä¸åæ¶çåºå«
è¿å个ä½ç¨åçå¯è§èå´å¦ä¸è¡¨æç¤ºã
说æï¼å¦æå¨ä¿®é¥°çå
ç´ ä¸é¢æ²¡æåä»»ä½è®¿é®ä¿®é¥°ç¬¦ï¼å表示 default ã

### Integerä¸ int çåºå«
int æ¯ Java æä¾ç 8 ç§åå§æ°æ®ç±»åä¹ä¸ãJava 为æ¯ä¸ªåå§ç±»åæä¾äº**å°è£
ç±»**ï¼Integer æ¯ Java 为 int æä¾çå°è£
ç±»ã**intçé»è®¤å¼ä¸º0ï¼èIntegerçé»è®¤å¼ä¸ºnull**ï¼å³Integerå¯ä»¥åºååºæªèµå¼åå¼ä¸º0çåºå«ï¼intåæ æ³è¡¨è¾¾åºæªèµå¼çæ
åµï¼ä¾å¦ï¼è¦æ³è¡¨è¾¾åºæ²¡æåå èè¯åèè¯æç»©ä¸º0çåºå«ï¼ååªè½ä½¿ç¨Integerãå¨JSPå¼åä¸ï¼Integerçé»è®¤ä¸ºnullï¼æä»¥ç¨el表达å¼å¨ææ¬æ¡ä¸æ¾ç¤ºæ¶ï¼å¼ä¸ºç©ºç½å符串ï¼èinté»è®¤çé»è®¤å¼ä¸º0ï¼æä»¥ç¨el表达å¼å¨ææ¬æ¡ä¸æ¾ç¤ºæ¶ï¼ç»æä¸º0ï¼æä»¥ï¼**intä¸éåä½ä¸ºwebå±çè¡¨åæ°æ®çç±»å**ã
### &å&&çåºå«
&å&&é½å¯ä»¥ç¨ä½**é»è¾ä¸**çè¿ç®ç¬¦ï¼è¡¨ç¤ºé»è¾ä¸ï¼andï¼ï¼å½è¿ç®ç¬¦ä¸¤è¾¹ç表达å¼çç»æé½ä¸º true æ¶ï¼æ´ä¸ªè¿ç®ç»ææä¸º trueï¼å¦åï¼åªè¦æä¸æ¹ä¸º falseï¼åç»æä¸º falseã
&& è¿å
·æ**çè·¯**çåè½ï¼å³å¦æç¬¬ä¸ä¸ªè¡¨è¾¾å¼ä¸º falseï¼åä¸å计ç®ç¬¬äºä¸ªè¡¨è¾¾å¼
&è¿å¯ä»¥ç¨ä½**ä½è¿ç®ç¬¦**ï¼å½&æä½ç¬¦ä¸¤è¾¹ç表达å¼ä¸æ¯booleanç±»åæ¶ï¼&表示æä½ä¸æä½ï¼æä»¬é常使ç¨0x0fæ¥ä¸ä¸ä¸ªæ´æ°è¿è¡&è¿ç®ï¼æ¥è·åè¯¥æ´æ°çæä½4个bitä½ï¼ä¾å¦ï¼0x31 & 0x0fçç»æä¸º0x01ã
### å
¨å±åéãå±é¨åéãéæåéåå®ä¾åéçåºå«
å
¨å±åéï¼ä¹å«æååéï¼æ¯æå¨ç±»ä¸å®ä¹çåéï¼å®å¨æ´ä¸ªç±»ä¸é½ææãå
¨å±åéçå®ä¹ä¸è¬æ¯å¨ç±»çæä¸æ¹ï¼å¨æææ¹æ³çå¤é¨çä½ç½®å¤å®ä¹ã
å
¨å±åéåå¯å为ï¼ç±»åéï¼éæåéï¼åå®ä¾åéï¼å¯¹è±¡åéï¼ã
å®ä¾åéä¹å«å¯¹è±¡åéï¼è¿ç§å鿝å¨ç±»å£°æçå
é¨ä½æ¯å¨ç±»çå
¶ä»æåæ¹æ³ä¹å¤å£°æçãç±»çæ¯ä¸ªå¯¹è±¡ç»´æ¤å®èªå·±çä¸ä»½å®ä¾åéç坿¬ã
注æï¼å®ä¾åé被å®ä¹å¨ç±»ä¸ä½å¨ä»»ä½æ¹æ³ä¹å¤ãå¹¶ä¸ New åºæ¥åå被åå§åï¼ä¹å°±æ¯è¯´æ²¡ææ¾ç¤ºåå§åçï¼é½è¢«èµäºäºé»è®¤å¼ã
ç±»åéä¹å«éæåéï¼ä¹å°±æ¯å¨å®ä¾åéåå äºstatic çåéãä¸è¬è¢«ç¨æ¥å£°æå¸¸éãï¼è³äºstaticè¿ä¸ªå
³é®åç详ç»ä½¿ç¨ï¼è¿éå°±ä¸å¨è¯¦ç»åè¿°ï¼
### ç±»åéä¸å®ä¾åéçåºå«
å¨è¯æ³å®ä¹ä¸çåºå«ï¼éæåéåè¦å staticå
³é®åï¼èå®ä¾åéååä¸å ã
å¨ç¨åºè¿è¡æ¶çåºå«ï¼**å®ä¾åéå±äºæä¸ªå¯¹è±¡ç屿§**ï¼å¿
é¡»å建äºå®ä¾å¯¹è±¡ï¼å
¶ä¸çå®ä¾åéæä¼è¢«åé
空é´ï¼æè½ä½¿ç¨è¿ä¸ªå®ä¾åéã**éæåéä¸å±äºæä¸ªå®ä¾å¯¹è±¡ï¼èæ¯å±äºç±»**ï¼æä»¥ä¹ç§°ä¸ºç±»åéï¼åªè¦ç¨åºå è½½äºç±»çåèç ï¼ä¸ç¨å建任ä½å®ä¾å¯¹è±¡ï¼éæåéå°±ä¼è¢«åé
空é´ï¼éæåéå°±å¯ä»¥è¢«ä½¿ç¨äºãæ»ä¹ï¼**å®ä¾åéå¿
é¡»å建对象åæå¯ä»¥éè¿è¿ä¸ªå¯¹è±¡æ¥ä½¿ç¨ï¼éæåéåå¯ä»¥ç´æ¥ä½¿ç¨ç±»åæ¥å¼ç¨**ã
ââç±»å鿝ææè¯¥ç±»çå®ä¾å对象æå
±æçèµæºï¼å
¶ä¸ä¸ä¸ªå¯¹è±¡å°å®å¼æ¹åï¼å
¶ä»å¯¹è±¡å¾å°çå°±æ¯æ¹ååçç»æï¼èå®ä¾åéåå±å¯¹è±¡ç§æï¼æä¸ä¸ªå¯¹è±¡å°å
¶æå
å«çå®ä¾åéç弿¹åï¼ä¸å½±åå
¶ä»å¯¹è±¡ä¸å®ä¾åéçå¼ï¼
**å±é¨åé**ï¼ç±å£°æå¨ææ¹æ³ï¼ææä»£ç 段éï¼æ¯å¦for循ç¯ï¼ãæ§è¡å°å®çæ¶åç´æ¥å¨æ ä¸å¼è¾å
å并使ç¨çãå½å±é¨åéè±ç¦»ä½ç¨åï¼åæ¾è¯¥ä½ç¨åçæ æéï¼æ 顶䏿 åºéåå³ä¸ºéæ¾å
åï¼é度æ¯é常快çã
### "=="åequalsåºå«
==æä½ç¬¦ä¸é¨ç¨æ¥æ¯è¾ä¸¤ä¸ªåéç弿¯å¦ç¸çï¼ä¹å°±æ¯ç¨äºæ¯è¾åéæå¯¹åºçå
å䏿åå¨çæ°å¼æ¯å¦ç¸åï¼è¦æ¯è¾ä¸¤ä¸ªåºæ¬ç±»åçæ°æ®æä¸¤ä¸ªå¼ç¨å鿝å¦ç¸çï¼åªè½ç¨==æä½ç¬¦ã
equals æ¹æ³æ¯ç¨äºæ¯è¾ä¸¤ä¸ªç¬ç«å¯¹è±¡çå
容æ¯å¦ç¸åï¼å°±å¥½æ¯å»æ¯è¾ä¸¤ä¸ªäººçé¿ç¸æ¯å¦ç¸åï¼å®æ¯è¾ç两个对象æ¯ç¬ç«çã
妿ä¸ä¸ªç±»æ²¡æèªå·±å®ä¹equalsæ¹æ³ï¼é£ä¹å®å°ç»§æ¿Objectç±»çequalsæ¹æ³ï¼Objectç±»çequalsæ¹æ³çå®ç°ä»£ç å¦ä¸ï¼
```JAVA
boolean equals(Object o){
return this==o;
}
```
è¿è¯´æï¼å¦æä¸ä¸ªç±»æ²¡æèªå·±å®ä¹equalsæ¹æ³ï¼å®é»è®¤çequalsæ¹æ³ï¼ä»Object 类继æ¿çï¼å°±æ¯ä½¿ç¨==æä½ç¬¦ï¼ä¹æ¯å¨æ¯è¾ä¸¤ä¸ªåéæåç对象æ¯å¦æ¯åä¸å¯¹è±¡ï¼è¿æ¶å使ç¨equalså使ç¨==ä¼å¾å°åæ ·çç»æï¼å¦ææ¯è¾çæ¯ä¸¤ä¸ªç¬ç«çå¯¹è±¡åæ»è¿åfalseãå¦æä½ ç¼åçç±»å¸æè½å¤æ¯è¾è¯¥ç±»å建ç两个å®ä¾å¯¹è±¡çå
容æ¯å¦ç¸åï¼é£ä¹ä½ å¿
é¡»è¦çequalsæ¹æ³ï¼ç±ä½ èªå·±åä»£ç æ¥å³å®å¨ä»ä¹æ
åµå³å¯è®¤ä¸ºä¸¤ä¸ªå¯¹è±¡çå
容æ¯ç¸åçã
### String s = new String("xyz");å建äºå 个String Object? äºè
ä¹é´æä»ä¹åºå«ï¼
两个æä¸ä¸ªï¼âxyzâ对åºä¸ä¸ªå¯¹è±¡ï¼è¿ä¸ªå¯¹è±¡æ¾å¨å符串常éç¼å²åºï¼å¸¸éâxyzâä¸ç®¡åºç°å¤å°éï¼é½æ¯ç¼å²åºä¸çé£ä¸ä¸ªãNew Stringæ¯åä¸éï¼å°±å建ä¸ä¸ªæ°ç对象ï¼å®ä¸å¥é£ä¸ªå¸¸éâxyzâ对象çå
容æ¥å建åºä¸ä¸ªæ°String对象ã妿以åå°±ç¨è¿âxyzâï¼è¿å¥ä»£è¡¨å°±ä¸ä¼å建âxyzâèªå·±äºï¼ç´æ¥ä»ç¼å²åºæ¿ã
### String åStringBufferçåºå«
StringåStringBufferï¼å®ä»¬é½å¯ä»¥å¨ååæä½å符串ï¼å³å
å«å¤ä¸ªå符çåç¬¦æ°æ®ã
ä¸åä¹å¤å¨äº: æè§å°±åæ¯åéå常éçåºå«ï¼StringBuffer对象çå
容å¯ä»¥ä¿®æ¹ï¼èSringå¯¹è±¡ä¸æ¦äº§çå°±ä¸å¯ä»¥è¢«ä¿®æ¹ï¼éæ°èµå¼çè¯ï¼å
¶å®å°±æ¯ 两个对象äºãå
¸åå°ï¼ä½ å¯ä»¥ä½¿ç¨StringBufferæ¥å¨ææé åç¬¦æ°æ®ã
å¦å¤ï¼Stringå®ç°äºequalsæ¹æ³ï¼new String(âabcâ).equals(new String(âabcâ)çç»æä¸ºtrue,èStringBuffer没æå®ç°equalsæ¹æ³ï¼æä»¥ï¼new StringBuffer(âabcâ).equals(new StringBuffer(âabcâ)çç»æä¸ºfalseã
SringBufferè¿è¡å符串å¤çæ¶ï¼ä¸çææ°ç对象ï¼å
åå å¾å°ï¼æä»¥å®é
使ç¨ä¸ï¼è¦ç»å¸¸å¯¹å符串è¿è¡ä¿®æ¹ï¼æå
¥å é¤çï¼ç¨StringBuferæ´åéï¼è¿æä¸ä¸ªStringBuildeï¼æ¯çº¿ç¨ä¸å®å
¨çï¼å¯è½å¿«ç¹ã
Stringè¦çäºequalsæ¹æ³åhashCodeæ¹æ³ï¼èStringBuffer没æè¦çequalsæ¹æ³åhashCodeæ¹æ³ï¼æä»¥ï¼å°StringBuffer对象åå¨è¿Javaéåç±»ä¸æ¶ä¼åºç°é®é¢ã
### final, finally, finalizeçåºå«
final ç¨äºå£°æå±æ§ï¼æ¹æ³åç±»ï¼åå«è¡¨ç¤ºå±æ§ä¸å¯åï¼æ¹æ³ä¸å¯è¦çï¼ç±»ä¸å¯ç»§æ¿ã
å
é¨ç±»è¦è®¿é®å±é¨åéï¼å±é¨åéå¿
é¡»å®ä¹æfinalç±»åã
finallyæ¯å¼å¸¸å¤çè¯å¥ç»æçä¸é¨åï¼è¡¨ç¤ºæ»æ¯æ§è¡ã
finalizeæ¯Objectç±»çä¸ä¸ªæ¹æ³ï¼å¨å徿¶é卿§è¡çæ¶åä¼è°ç¨è¢«åæ¶å¯¹è±¡çæ¤æ¹æ³ï¼å¯ä»¥è¦çæ¤æ¹æ³æä¾å徿¶éæ¶çå
¶ä»èµæºåæ¶ï¼ä¾å¦å
³éæä»¶çãJVMä¸ä¿è¯æ¤æ¹æ³æ»è¢«è°ç¨
### Javaä¸finallyè¯å¥åçæ·±åº¦è§£æ(try catch finallyçæ§è¡é¡ºåº)
1ãé¤äºä»¥ä¸2ç§æ
åµå¤ï¼ä¸ç®¡ææ¨æåºç°å¼å¸¸ï¼finallyåä¸ä»£ç é½ä¼æ§è¡ï¼
â ç¨åºæªè¿å
¥try{}åçæ§è¡ï¼å¦å¨tryä¹ååºç°è¿è¡æ¶å¼å¸¸ï¼ç¨åºç»æ¢ã
â¡ç¨åºè¿å
¥å°try{}åcatch{}åçæ§è¡ï¼ä½æ¯å¨try{}æè
catch{}å碰å°äºSystem.exit(0)è¯å¥ï¼jvmç´æ¥éåºã finally{}åä¸ä¼æ§è¡
2ãå½tryåcatch䏿returnæ¶ï¼finallyä»ç¶ä¼æ§è¡ï¼
3ã**finallyæ¯å¨returnåé¢ç表达å¼è¿ç®åæ§è¡ç**ï¼æ¤æ¶å¹¶æ²¡æè¿åè¿ç®åçå¼ï¼èæ¯å
æè¦è¿åçå¼çå¼ç¨å°åä¿åèµ·æ¥ï¼èä¸ç®¡finallyä¸çä»£ç æä¹æ ·ï¼æåè¿åç齿¯è¿ä¸ªå¼ç¨å°åï¼æè
说è¿ä¸ªå¼ç¨å°åæåç对象ï¼ï¼èè¿ä¸ªè¿åå¼å¨finallyä¸ä¼è¢«ä¸ä¼è¢«æ¹åè¦å以ä¸2ç§æ
åµï¼ã
â è¥è¿ä¸ªè¿å弿¯åºæ¬æ°æ®ç±»åï¼int,doubleï¼æè
ä¸å¯å类对象ï¼å¦String,Integerï¼ï¼
â¡åä¸ç®¡finallyä¸çä»£ç æä¹æ ·ï¼è¿åçå¼é½ä¸ä¼æ¹åï¼ä»ç¶æ¯ä¹åä¿åçå¼ï¼è¥è¿ä¸ªå¼æ¯å¯å类对象ï¼ï¼æä»¥å½æ°è¿å弿¯å¨finallyæ§è¡åç¡®å®çï¼
4ã**finally䏿好ä¸è¦å
å«returnï¼å¦åç¨åºä¼æåéåºï¼è¿åå¼ä¸æ¯tryæcatchä¸ä¿åçè¿åå¼ï¼èæ¯finallyä¸çreturnå¼**ã
### OverloadåOverrideçåºå«
Overloadæ¯éè½½çææï¼Overrideæ¯è¦ççææï¼ä¹å°±æ¯éåã
éè½½Overload表示åä¸ä¸ªç±»ä¸å¯ä»¥æå¤ä¸ªåç§°ç¸åçæ¹æ³ï¼ä½è¿äºæ¹æ³çåæ°å表åä¸ç¸åï¼å³åæ°ä¸ªæ°æç±»åä¸åï¼ã
éåOverride表示åç±»ä¸çæ¹æ³å¯ä»¥ä¸ç¶ç±»ä¸çæä¸ªæ¹æ³çåç§°ååæ°å®å
¨ç¸åï¼éè¿åç±»å建çå®ä¾å¯¹è±¡è°ç¨è¿ä¸ªæ¹æ³æ¶ï¼å°è°ç¨åç±»ä¸çå®ä¹æ¹æ³ï¼è¿ç¸å½äºæç¶ç±»ä¸å®ä¹çé£ä¸ªå®å
¨ç¸åçæ¹æ³ç»è¦çäºï¼è¿ä¹æ¯é¢å对象ç¼ç¨ç夿æ§çä¸ç§è¡¨ç°ãåç±»è¦çç¶ç±»çæ¹æ³æ¶ï¼åªè½æ¯ç¶ç±»æåºæ´å°çå¼å¸¸ï¼æè
æ¯æåºç¶ç±»æåºçå¼å¸¸çåå¼å¸¸ï¼å 为åç±»å¯ä»¥è§£å³ç¶ç±»çä¸äºé®é¢ï¼ä¸è½æ¯ç¶ç±»ææ´å¤çé®é¢ãåç±»æ¹æ³çè®¿é®æéåªè½æ¯ç¶ç±»çæ´å¤§ï¼ä¸è½æ´å°ã妿ç¶ç±»çæ¹æ³æ¯privateç±»åï¼é£ä¹ï¼åç±»åä¸åå¨è¦ççéå¶ï¼ç¸å½äºåç±»ä¸å¢å äºä¸ä¸ªå
¨æ°çæ¹æ³ã
### ceilãfloorãroundçåºå«
Mathç±»ä¸æä¾äºä¸ä¸ªä¸åæ´æå
³çæ¹æ³ï¼ceilãfloorãroundï¼è¿äºæ¹æ³çä½ç¨ä¸å®ä»¬çè±æåç§°çå«ä¹ç¸å¯¹åºï¼ä¾å¦ï¼ceilçè±ææä¹æ¯å¤©è±æ¿ï¼è¯¥æ¹æ³å°±è¡¨ç¤ºåä¸åæ´ï¼Math.ceil(11.3)çç»æä¸º12,Math.ceil(-11.3)çç»ææ¯-11ï¼floorçè±ææä¹æ¯å°æ¿ï¼è¯¥æ¹æ³å°±è¡¨ç¤ºåä¸åæ´ï¼Math.ceil(11.6)çç»æä¸º11,Math.ceil(-11.6)çç»ææ¯-12ï¼æé¾ææ¡çæ¯roundæ¹æ³ï¼å®è¡¨ç¤ºâåèäºå
¥âï¼ç®æ³ä¸ºMath.floor(x+0.5)ï¼å³å°åæ¥çæ°åå ä¸0.5åååä¸åæ´ï¼æä»¥ï¼Math.round(11.5)çç»æä¸º12ï¼Math.round(-11.5)çç»æä¸º-11ã
### æ½è±¡ç±»åæ¥å£ç对æ¯
æ½è±¡ç±»æ¯ç¨æ¥ææåç±»çéç¨ç¹æ§çãæ¥å£æ¯æ½è±¡æ¹æ³çéåã
ä»è®¾è®¡å±é¢æ¥è¯´ï¼æ½è±¡ç±»æ¯å¯¹ç±»çæ½è±¡ï¼æ¯ä¸ç§æ¨¡æ¿è®¾è®¡ï¼æ¥å£æ¯è¡ä¸ºçæ½è±¡ï¼æ¯ä¸ç§è¡ä¸ºçè§èã
**ç¸åç¹**
- æ¥å£åæ½è±¡ç±»é½ä¸è½å®ä¾å
- é½ä½äºç»§æ¿ç顶端ï¼ç¨äºè¢«å
¶ä»å®ç°æç»§æ¿
- é½å
嫿½è±¡æ¹æ³ï¼å
¶åç±»é½å¿
é¡»è¦åè¿äºæ½è±¡æ¹æ³
**ä¸åç¹**
| åæ° | æ½è±¡ç±» | æ¥å£ |
| ---------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 声æ | æ½è±¡ç±»ä½¿ç¨abstractå
³é®å声æ | æ¥å£ä½¿ç¨interfaceå
³é®å声æ |
| å®ç° | å类使ç¨extendså
³é®åæ¥ç»§æ¿æ½è±¡ç±»ã妿åç±»ä¸æ¯æ½è±¡ç±»çè¯ï¼å®éè¦æä¾æ½è±¡ç±»ä¸ææå£°æçæ¹æ³çå®ç° | å类使ç¨implementså
³é®åæ¥å®ç°æ¥å£ãå®éè¦æä¾æ¥å£ä¸ææå£°æçæ¹æ³çå®ç° |
| æé å¨ | æ½è±¡ç±»å¯ä»¥ææé å¨ | æ¥å£ä¸è½ææé å¨ |
| 访é®ä¿®é¥°ç¬¦ | æ½è±¡ç±»ä¸çæ¹æ³å¯ä»¥æ¯ä»»æè®¿é®ä¿®é¥°ç¬¦ | æ¥å£æ¹æ³é»è®¤ä¿®é¥°ç¬¦æ¯publicãå¹¶ä¸ä¸å
许å®ä¹ä¸º private æè
protected |
| å¤ç»§æ¿ | ä¸ä¸ªç±»æå¤åªè½ç»§æ¿ä¸ä¸ªæ½è±¡ç±» | ä¸ä¸ªç±»å¯ä»¥å®ç°å¤ä¸ªæ¥å£ |
| åæ®µå£°æ | æ½è±¡ç±»çåæ®µå£°æå¯ä»¥æ¯ä»»æç | æ¥å£çåæ®µé»è®¤é½æ¯ static å final ç |
**夿³¨**ï¼Java8䏿¥å£ä¸å¼å
¥é»è®¤æ¹æ³åéææ¹æ³ï¼ä»¥æ¤æ¥åå°æ½è±¡ç±»åæ¥å£ä¹é´çå·®å¼ã
ç°å¨ï¼æä»¬å¯ä»¥ä¸ºæ¥å£æä¾é»è®¤å®ç°çæ¹æ³äºï¼å¹¶ä¸ä¸ç¨å¼ºå¶åç±»æ¥å®ç°å®ã
æ¥å£åæ½è±¡ç±»åæä¼ç¼ºç¹ï¼å¨æ¥å£åæ½è±¡ç±»çéæ©ä¸ï¼å¿
é¡»éµå®è¿æ ·ä¸ä¸ªååï¼
- è¡ä¸ºæ¨¡ååºè¯¥æ»æ¯éè¿æ¥å£è䏿¯æ½è±¡ç±»å®ä¹ï¼æä»¥é常æ¯ä¼å
éç¨æ¥å£ï¼å°½éå°ç¨æ½è±¡ç±»ã
- éæ©æ½è±¡ç±»çæ¶åé常æ¯å¦ä¸æ
åµï¼éè¦å®ä¹åç±»çè¡ä¸ºï¼åè¦ä¸ºåç±»æä¾éç¨çåè½ã
### Javaä¸çå¼å¸¸å¤çæºå¶çç®ååçååºç¨
å¼å¸¸æ¯æjavaç¨åºè¿è¡æ¶ï¼éç¼è¯ï¼æåçç鿣叏æ
嵿é误ï¼ä¸ç°å®çæ´»ä¸çäºä»¶å¾ç¸ä¼¼ï¼ç°å®çæ´»ä¸çäºä»¶å¯ä»¥å
å«äºä»¶åççæ¶é´ãå°ç¹ã人ç©ãæ
èçä¿¡æ¯ï¼å¯ä»¥ç¨ä¸ä¸ªå¯¹è±¡æ¥è¡¨ç¤ºï¼Java使ç¨é¢åå¯¹è±¡çæ¹å¼æ¥å¤çå¼å¸¸ï¼å®æç¨åºä¸åççæ¯ä¸ªå¼å¸¸ä¹é½åå«å°è£
å°ä¸ä¸ªå¯¹è±¡æ¥è¡¨ç¤ºçï¼è¯¥å¯¹è±¡ä¸å
嫿å¼å¸¸çä¿¡æ¯ã
Java对å¼å¸¸è¿è¡äºåç±»ï¼ä¸åç±»åçå¼å¸¸åå«ç¨ä¸åçJavaç±»è¡¨ç¤ºï¼ææå¼å¸¸çæ ¹ç±»ä¸ºjava.lang.Throwableï¼Throwableä¸é¢åæ´¾çäºä¸¤ä¸ªåç±»ï¼ErroråExceptionï¼Error 表示åºç¨ç¨åºæ¬èº«æ æ³å
æåæ¢å¤çä¸ç§ä¸¥éé®é¢ï¼ç¨åºåªææ»ç份äºï¼ä¾å¦ï¼è¯´å
åæº¢åºåçº¿ç¨æ»éçç³»ç»é®é¢ãException表示ç¨åºè¿è½å¤å
æåæ¢å¤çé®é¢ï¼å
¶ä¸åå为系ç»å¼å¸¸åæ®éå¼å¸¸ï¼ç³»ç»å¼å¸¸æ¯è½¯ä»¶æ¬èº«ç¼ºé·æå¯¼è´çé®é¢ï¼ä¹å°±æ¯è½¯ä»¶å¼å人åèèä¸å¨æå¯¼è´çé®é¢ï¼è½¯ä»¶ä½¿ç¨è
æ æ³å
æåæ¢å¤è¿ç§é®é¢ï¼ä½å¨è¿ç§é®é¢ä¸è¿å¯ä»¥è®©è½¯ä»¶ç³»ç»ç»§ç»è¿è¡æè
è®©è½¯ä»¶æ»æï¼ä¾å¦ï¼æ°ç»èæ¬è¶çï¼ArrayIndexOutOfBoundsExceptionï¼ï¼ç©ºæéå¼å¸¸ï¼NullPointerExceptionï¼ã类转æ¢å¼å¸¸ï¼ClassCastExceptionï¼ï¼æ®éå¼å¸¸æ¯è¿è¡ç¯å¢çååæå¼å¸¸æå¯¼è´çé®é¢ï¼æ¯ç¨æ·è½å¤å
æçé®é¢ï¼ä¾å¦ï¼ç½ç»æçº¿ï¼ç¡¬ç空é´ä¸å¤ï¼åçè¿æ ·çå¼å¸¸åï¼ç¨åºä¸åºè¯¥æ»æã
java为系ç»å¼å¸¸åæ®éå¼å¸¸æä¾äºä¸åçè§£å³æ¹æ¡ï¼ç¼è¯å¨å¼ºå¶æ®éå¼å¸¸å¿
é¡»try..catchå¤çæç¨throws声æç»§ç»æç»ä¸å±è°ç¨æ¹æ³å¤çï¼æä»¥æ®éå¼å¸¸ä¹ç§°ä¸ºcheckedå¼å¸¸ï¼èç³»ç»å¼å¸¸å¯ä»¥å¤çä¹å¯ä»¥ä¸å¤çï¼æä»¥ï¼ç¼è¯å¨ä¸å¼ºå¶ç¨try..catchå¤çæç¨throws声æï¼æä»¥ç³»ç»å¼å¸¸ä¹ç§°ä¸ºuncheckedå¼å¸¸ã
### ä»ä¹æ¯javaåºååï¼å¦ä½å®ç°javaåºååï¼æè
请解éSerializableæ¥å£çä½ç¨
æ 论ä½ç§ç±»åçæ°æ®ï¼é½æ¯ä»¥äºè¿å¶çå½¢å¼å¨ç½ç»ä¸ä¼ éï¼ä¸ºäºç±ä¸ä¸ªè¿ç¨æJava对象åéç»å¦ä¸ä¸ªè¿ç¨ï¼éè¦æå
¶è½¬æ¢ä¸ºåèåºåæè½å¨ç½ç»ä¸ä¼ éï¼æJAVA对象转æ¢ä¸ºåèåºåçè¿ç¨å°±ç§°ä¸ºå¯¹è±¡çåºååï¼å°åèåºåæ¢å¤æJava对象çè¿ç¨ç§°ä¸ºå¯¹è±¡çååºåå
åªæå®ç°äº serializableæ¥å£çç±»ç对象æè½è¢«åºåå
ä¾å¦ï¼å¨webå¼åä¸ï¼å¦æå¯¹è±¡è¢«ä¿åå¨äºSessionä¸ï¼tomcatå¨é坿¶è¦æSession对象åºååå°ç¡¬çï¼è¿ä¸ªå¯¹è±¡å°±å¿
é¡»å®ç°Serializableæ¥å£ãå¦æå¯¹è±¡è¦ç»è¿åå¸å¼ç³»ç»è¿è¡ç½ç»ä¼ è¾æéè¿rmiçè¿ç¨è°ç¨ï¼è¿å°±éè¦å¨ç½ç»ä¸ä¼ è¾å¯¹è±¡ï¼è¢«ä¼ è¾ç对象就å¿
é¡»å®ç°Serializableæ¥å£ã
### java䏿å ç§ç±»åçæµï¼JDK为æ¯ç§ç±»åçæµæä¾äºä¸äºæ½è±¡ç±»ä»¥ä¾ç»§æ¿ï¼è¯·è¯´åºä»ä»¬å嫿¯åªäºç±»ï¼
åèæµï¼å符æµã
åèæµç»§æ¿äºInputStream OutputStreamï¼
å符æµç»§æ¿äºInputStreamReader OutputStreamWriterã
å¨java.ioå
ä¸è¿æè®¸å¤å
¶ä»çæµï¼ä¸»è¦æ¯ä¸ºäºæé«æ§è½åä½¿ç¨æ¹ä¾¿ã
### åèæµä¸å符æµçåºå«
è¦æä¸çäºè¿å¶æ°æ®æ°æ®éä¸è¾åºå°æä¸ªè®¾å¤ä¸ï¼æè
ä»æä¸ªè®¾å¤ä¸éä¸è¯»åä¸çäºè¿å¶æ°æ®ï¼ä¸ç®¡è¾å
¥è¾åºè®¾å¤æ¯ä»ä¹ï¼æä»¬è¦ç¨ç»ä¸çæ¹å¼æ¥å®æè¿äºæä½ï¼ç¨ä¸ç§æ½è±¡çæ¹å¼è¿è¡æè¿°ï¼è¿ä¸ªæ½è±¡æè¿°æ¹å¼èµ·å为IOæµï¼å¯¹åºçæ½è±¡ç±»ä¸ºOutputStreamåInputStream ï¼ä¸åçå®ç°ç±»å°±ä»£è¡¨ä¸åçè¾å
¥åè¾åºè®¾å¤ï¼å®ä»¬é½æ¯é对åèè¿è¡æä½çã
å¨åºç¨ä¸ï¼ç»å¸¸è¦å®å
¨æ¯å符ç䏿®µææ¬è¾åºå»æè¯»è¿æ¥ï¼ç¨åèæµå¯ä»¥åï¼è®¡ç®æºä¸çä¸åæç»é½æ¯äºè¿å¶çåèå½¢å¼åå¨ã对äºâä¸å½âè¿äºå符ï¼é¦å
è¦å¾å°å
¶å¯¹åºçåèï¼ç¶åå°åèåå
¥å°è¾åºæµãè¯»åæ¶ï¼é¦å
读å°çæ¯åèï¼å¯æ¯æä»¬è¦æå®æ¾ç¤ºä¸ºåç¬¦ï¼æä»¬éè¦å°åèè½¬æ¢æå符ãç±äºè¿æ ·çéæ±å¾å¹¿æ³ï¼äººå®¶ä¸é¨æä¾äºå符æµçå
è£
ç±»ã
åºå±è®¾å¤æ°¸è¿åªæ¥ååèæ°æ®ï¼ææ¶åè¦åå符串å°åºå±è®¾å¤ï¼éè¦å°å符串转æåèåè¿è¡åå
¥ãåç¬¦æµæ¯åèæµçå
è£
ï¼å符æµåæ¯ç´æ¥æ¥åå符串ï¼å®å
é¨å°ä¸²è½¬æåèï¼ååå
¥åºå±è®¾å¤ï¼è¿ä¸ºæä»¬åIO设å«åå
¥æè¯»åå符串æä¾äºä¸ç¹ç¹æ¹ä¾¿ã
å符ååèè½¬æ¢æ¶ï¼è¦æ³¨æç¼ç çé®é¢ï¼å 为å符串转æåèæ°ç»ï¼
å
¶å®æ¯è½¬æè¯¥å符çæç§ç¼ç çåèå½¢å¼ï¼è¯»å乿¯åä¹çéçã
### è·å¾ä¸ä¸ªç±»ç类对象æåªäºæ¹å¼ï¼
- æ¹æ³1ï¼ç±»å.classï¼ä¾å¦ï¼String.class
- æ¹æ³2ï¼å¯¹è±¡.getClass()ï¼ä¾å¦ï¼"hello".getClass()
- æ¹æ³3ï¼Class.forName()ï¼ä¾å¦ï¼Class.forName("java.lang.String")
### å¦ä½éè¿åå°å建对象ï¼
- æ¹æ³1ï¼éè¿ç±»å¯¹è±¡è°ç¨newInstance()æ¹æ³ï¼ä¾å¦ï¼String.class.newInstance()
- æ¹æ³2ï¼éè¿ç±»å¯¹è±¡çgetConstructor()ægetDeclaredConstructor()æ¹æ³è·å¾æé å¨ï¼Constructorï¼å¯¹è±¡å¹¶è°ç¨å
¶newInstance()æ¹æ³å建对象ï¼ä¾å¦ï¼String.class.getConstructor(String.class).newInstance("Hello");
### break ,continue ,return çåºå«åä½ç¨
break è·³åºæ»ä¸ä¸å±å¾ªç¯ï¼ä¸åæ§è¡å¾ªç¯(ç»æå½åç循ç¯ä½)
continue è·³åºæ¬æ¬¡å¾ªç¯ï¼ç»§ç»æ§è¡ä¸æ¬¡å¾ªç¯(ç»ææ£å¨æ§è¡çå¾ªç¯ è¿å
¥ä¸ä¸ä¸ªå¾ªç¯æ¡ä»¶)
return ç¨åºè¿åï¼ä¸åæ§è¡ä¸é¢ç代ç (ç»æå½åçæ¹æ³ ç´æ¥è¿å)
### hashCode ä¸ equals (éè¦)
HashSetå¦ä½æ£æ¥éå¤
两个对象ç hashCode() ç¸åï¼å equals() ä¹ä¸å®ä¸º trueï¼å¯¹åï¼
hashCodeåequalsæ¹æ³çå
³ç³»
é¢è¯å®å¯è½ä¼é®ä½ ï¼âä½ éåè¿ hashcode å equals ä¹ï¼ä¸ºä»ä¹éåequalsæ¶å¿
é¡»éåhashCodeæ¹æ³ï¼â
**hashCode()ä»ç»**
hashCode() çä½ç¨æ¯è·ååå¸ç ï¼ä¹ç§°ä¸ºæ£åç ï¼å®å®é
䏿¯è¿åä¸ä¸ªintæ´æ°ãè¿ä¸ªåå¸ç çä½ç¨æ¯ç¡®å®è¯¥å¯¹è±¡å¨åå¸è¡¨ä¸çç´¢å¼ä½ç½®ãhashCode() å®ä¹å¨JDKçObject.javaä¸ï¼è¿å°±æå³çJavaä¸çä»»ä½ç±»é½å
嫿hashCode()彿°ã
æ£å表åå¨çæ¯é®å¼å¯¹(key-value)ï¼å®çç¹ç¹æ¯ï¼è½æ ¹æ®âé®âå¿«éçæ£ç´¢åºå¯¹åºçâå¼âãè¿å
¶ä¸å°±å©ç¨å°äºæ£åç ï¼ï¼å¯ä»¥å¿«éæ¾å°æéè¦ç对象ï¼
**为ä»ä¹è¦æ hashCode**
**æä»¬ä»¥âHashSet å¦ä½æ£æ¥éå¤â为ä¾åæ¥è¯´æä¸ºä»ä¹è¦æ hashCode**ï¼
å½ä½ æå¯¹è±¡å å
¥ HashSet æ¶ï¼HashSet ä¼å
计ç®å¯¹è±¡ç hashcode 弿¥å¤æå¯¹è±¡å å
¥çä½ç½®ï¼åæ¶ä¹ä¼ä¸å
¶ä»å·²ç»å å
¥ç对象ç hashcode å¼ä½æ¯è¾ï¼å¦ææ²¡æç¸ç¬¦çhashcodeï¼HashSetä¼å设对象没æéå¤åºç°ã使¯å¦æåç°æç¸å hashcode å¼ç对象ï¼è¿æ¶ä¼è°ç¨ equals()æ¹æ³æ¥æ£æ¥ hashcode ç¸çç对象æ¯å¦ççç¸åã妿䏤è
ç¸åï¼HashSet å°±ä¸ä¼è®©å
¶å å
¥æä½æåã妿ä¸åçè¯ï¼å°±ä¼éæ°æ£åå°å
¶ä»ä½ç½®ãï¼æèªæçJavaå¯è书ãHead first javaã第äºçï¼ãè¿æ ·æä»¬å°±å¤§å¤§åå°äº equals çæ¬¡æ°ï¼ç¸åºå°±å¤§å¤§æé«äºæ§è¡é度ã
**hashCode()ä¸equals()çç¸å
³è§å®**
å¦æä¸¤ä¸ªå¯¹è±¡ç¸çï¼åhashcodeä¸å®ä¹æ¯ç¸åç
两个对象ç¸çï¼å¯¹ä¸¤ä¸ªå¯¹è±¡åå«è°ç¨equalsæ¹æ³é½è¿åtrue
两个对象æç¸åçhashcodeå¼ï¼å®ä»¬ä¹ä¸ä¸å®æ¯ç¸çç
**å æ¤ï¼equals æ¹æ³è¢«è¦çè¿ï¼å hashCode æ¹æ³ä¹å¿
须被è¦ç**
hashCode() çé»è®¤è¡ä¸ºæ¯å¯¹å ä¸ç对象产çç¬ç¹å¼ãå¦ææ²¡æéå hashCode()ï¼å该 class ç两个对象æ 论å¦ä½é½ä¸ä¼ç¸çï¼å³ä½¿è¿ä¸¤ä¸ªå¯¹è±¡æåç¸åçæ°æ®ï¼
### 为ä»ä¹éåäºequals()ï¼è¿è¦éåhashCode()ï¼
hashCode æ¹æ³ç¨äºæ£åéåçæ¥æ¾ï¼equals æ¹æ³ç¨äºå¤æä¸¤ä¸ªå¯¹è±¡æ¯å¦ç¸çã
为ä»ä¹éåäº equals æ¹æ³ï¼è¿è¦éå hashCode æ¹æ³ï¼
å ä¸ºå¦æåªéåäº equals æ¹æ³ï¼ä¸¤ä¸ªå¯¹è±¡ equals è¿åäºtrueï¼ä½æ¯å¦ææ²¡æéå hashCode æ¹æ³ï¼éåè¿æ¯ä¼æå
¥å
ç´ ãè¿æ ·éåä¸å°±åºç°äºéå¤å
ç´ äºã
### BIO,NIO,AIO æä»ä¹åºå«?
ç®ç
- BIOï¼Block IO 忥é»å¡å¼ IOï¼å°±æ¯æä»¬å¹³å¸¸ä½¿ç¨çä¼ ç» IOï¼å®çç¹ç¹æ¯æ¨¡å¼ç®åä½¿ç¨æ¹ä¾¿ï¼å¹¶åå¤çè½åä½ã
- NIOï¼Non IO 忥éé»å¡ IOï¼æ¯ä¼ ç» IO çå级ï¼å®¢æ·ç«¯åæå¡å¨ç«¯éè¿ Channelï¼ééï¼é讯ï¼å®ç°äºå¤è·¯å¤ç¨ã
- AIOï¼Asynchronous IO æ¯ NIO çå级ï¼ä¹å« NIO2ï¼å®ç°äºå¼æ¥éå µå¡ IO ï¼å¼æ¥ IO çæä½åºäºäºä»¶ååè°æºå¶ã
详ç»åç
- **BIO (Blocking I/O):** 忥é»å¡I/O模å¼ï¼æ°æ®ç读ååå
¥å¿
é¡»é»å¡å¨ä¸ä¸ªçº¿ç¨å
çå¾
å
¶å®æã卿´»å¨è¿æ¥æ°ä¸æ¯ç¹å«é«ï¼å°äºåæº1000ï¼çæ
åµä¸ï¼è¿ç§æ¨¡åæ¯æ¯è¾ä¸éçï¼å¯ä»¥è®©æ¯ä¸ä¸ªè¿æ¥ä¸æ³¨äºèªå·±ç I/O å¹¶ä¸ç¼ç¨æ¨¡åç®åï¼ä¹ä¸ç¨è¿å¤èèç³»ç»çè¿è½½ãéæµçé®é¢ãçº¿ç¨æ± æ¬èº«å°±æ¯ä¸ä¸ªå¤©ç¶çæ¼æï¼å¯ä»¥ç¼å²ä¸äºç³»ç»å¤çä¸äºçè¿æ¥æè¯·æ±ã使¯ï¼å½é¢å¯¹åä¸çè³ç¾ä¸çº§è¿æ¥çæ¶åï¼ä¼ ç»ç BIO æ¨¡åæ¯æ è½ä¸ºåçãå æ¤ï¼æä»¬éè¦ä¸ç§æ´é«æç I/O å¤çæ¨¡åæ¥åºå¯¹æ´é«çå¹¶åéã
- **NIO (New I/O):** NIOæ¯ä¸ç§åæ¥éé»å¡çI/O模åï¼å¨Java 1.4 ä¸å¼å
¥äºNIOæ¡æ¶ï¼å¯¹åº java.nio å
ï¼æä¾äº Channel , Selectorï¼Bufferçæ½è±¡ãNIOä¸çNå¯ä»¥ç解为Non-blockingï¼ä¸å纯æ¯Newã宿¯æé¢åç¼å²çï¼åºäºééçI/Oæä½æ¹æ³ã NIOæä¾äºä¸ä¼ ç»BIO模åä¸ç `Socket` å `ServerSocket` ç¸å¯¹åºç `SocketChannel` å `ServerSocketChannel` 两ç§ä¸åç奿¥åééå®ç°,两ç§éé齿¯æé»å¡åéé»å¡ä¸¤ç§æ¨¡å¼ãé»å¡æ¨¡å¼ä½¿ç¨å°±åä¼ ç»ä¸çæ¯æä¸æ ·ï¼æ¯è¾ç®åï¼ä½æ¯æ§è½åå¯é æ§é½ä¸å¥½ï¼éé»å¡æ¨¡å¼æ£å¥½ä¸ä¹ç¸åã对äºä½è´è½½ãä½å¹¶åçåºç¨ç¨åºï¼å¯ä»¥ä½¿ç¨åæ¥é»å¡I/Oæ¥æåå¼åéç忴好çç»´æ¤æ§ï¼å¯¹äºé«è´è½½ãé«å¹¶åçï¼ç½ç»ï¼åºç¨ï¼åºä½¿ç¨ NIO çéé»å¡æ¨¡å¼æ¥å¼å
- **AIO (Asynchronous I/O):** AIO ä¹å°±æ¯ NIO 2ãå¨ Java 7 ä¸å¼å
¥äº NIO çæ¹è¿ç NIO 2,宿¯å¼æ¥éé»å¡çIO模åã弿¥ IO æ¯åºäºäºä»¶ååè°æºå¶å®ç°çï¼ä¹å°±æ¯åºç¨æä½ä¹åä¼ç´æ¥è¿åï¼ä¸ä¼å µå¡å¨é£éï¼å½åå°å¤çå®æï¼æä½ç³»ç»ä¼éç¥ç¸åºç线ç¨è¿è¡åç»çæä½ãAIO æ¯å¼æ¥IOç缩åï¼è½ç¶ NIO å¨ç½ç»æä½ä¸ï¼æä¾äºéé»å¡çæ¹æ³ï¼ä½æ¯ NIO ç IO è¡ä¸ºè¿æ¯åæ¥çãå¯¹äº NIO æ¥è¯´ï¼æä»¬çä¸å¡çº¿ç¨æ¯å¨ IO æä½åå¤å¥½æ¶ï¼å¾å°éç¥ï¼æ¥çå°±ç±è¿ä¸ªçº¿ç¨èªè¡è¿è¡ IO æä½ï¼IOæä½æ¬èº«æ¯åæ¥çãæ¥é
ç½ä¸ç¸å
³èµæï¼æåç°å°±ç®åæ¥è¯´ AIO çåºç¨è¿ä¸æ¯å¾å¹¿æ³ï¼Netty ä¹åä¹å°è¯ä½¿ç¨è¿ AIOï¼ä¸è¿åæ¾å¼äºã
## åå°
### ä»ä¹æ¯åå°æºå¶ï¼
JAVAåå°æºå¶æ¯å¨è¿è¡ç¶æä¸ï¼å¯¹äºä»»æä¸ä¸ªç±»ï¼é½è½å¤ç¥éè¿ä¸ªç±»çææå±æ§åæ¹æ³ï¼å¯¹äºä»»æä¸ä¸ªå¯¹è±¡ï¼é½è½å¤è°ç¨å®çä»»æä¸ä¸ªæ¹æ³å屿§ï¼è¿ç§å¨æè·åçä¿¡æ¯ä»¥å卿è°ç¨å¯¹è±¡çæ¹æ³çåè½ç§°ä¸ºjavaè¯è¨çåå°æºå¶ã
éæç¼è¯å卿ç¼è¯
- **éæç¼è¯ï¼**å¨ç¼è¯æ¶ç¡®å®ç±»åï¼ç»å®å¯¹è±¡
- **卿ç¼è¯ï¼**è¿è¡æ¶ç¡®å®ç±»åï¼ç»å®å¯¹è±¡
### åå°æºå¶ä¼ç¼ºç¹
- **ä¼ç¹ï¼** è¿è¡æç±»åç夿ï¼å¨æå è½½ç±»ï¼æé«ä»£ç çµæ´»åº¦ã
- **缺ç¹ï¼** æ§è½ç¶é¢ï¼åå°ç¸å½äºä¸ç³»åè§£éæä½ï¼éç¥ JVM è¦åçäºæ
ï¼æ§è½æ¯ç´æ¥çjava代ç è¦æ
¢å¾å¤ã
### åå°æºå¶çåºç¨åºæ¯æåªäºï¼
åå°æ¯æ¡æ¶è®¾è®¡ççµéã
卿们平æ¶ç项ç®å¼åè¿ç¨ä¸ï¼åºæ¬ä¸å¾å°ä¼ç´æ¥ä½¿ç¨å°åå°æºå¶ï¼ä½è¿ä¸è½è¯´æåå°æºå¶æ²¡æç¨ï¼å®é
䏿å¾å¤è®¾è®¡ãå¼åé½ä¸åå°æºå¶æå
³ï¼ä¾å¦æ¨¡ååçå¼åï¼éè¿åå°å»è°ç¨å¯¹åºçåèç ï¼å¨æä»£ç设计模å¼ä¹éç¨äºåå°æºå¶ï¼è¿ææä»¬æ¥å¸¸ä½¿ç¨ç Springï¼Hibernate çæ¡æ¶ä¹å¤§é使ç¨å°äºåå°æºå¶ã
举ä¾ï¼
â æä»¬å¨ä½¿ç¨JDBCè¿æ¥æ°æ®åºæ¶ä½¿ç¨Class.forName()éè¿åå°å è½½æ°æ®åºç驱å¨ç¨åºï¼
â¡Springæ¡æ¶ä¹ç¨å°å¾å¤åå°æºå¶ï¼æç»å
¸çå°±æ¯xmlçé
置模å¼ãSpring éè¿ XML é
置模å¼è£
è½½ Bean çè¿ç¨ï¼1) å°ç¨åºå
ææ XML æ Properties é
ç½®æä»¶å è½½å
¥å
åä¸; 2)Javaç±»éé¢è§£æxmlæpropertieséé¢çå
容ï¼å¾å°å¯¹åºå®ä½ç±»çåèç å符串以åç¸å
³ç屿§ä¿¡æ¯; 3)使ç¨åå°æºå¶ï¼æ ¹æ®è¿ä¸ªå符串è·å¾æä¸ªç±»çClasså®ä¾; 4)卿é
ç½®å®ä¾ç屿§
### Javaè·ååå°çä¸ç§æ¹æ³
1.éè¿new对象å®ç°åå°æºå¶ 2.éè¿è·¯å¾å®ç°åå°æºå¶ 3.éè¿ç±»åå®ç°åå°æºå¶
```java
public class Student {
private int id;
String name;
protected boolean sex;
public float score;
}
123456
public class Get {
//è·ååå°æºå¶ä¸ç§æ¹å¼
public static void main(String[] args) throws ClassNotFoundException {
//æ¹å¼ä¸(éè¿å»ºç«å¯¹è±¡)
Student stu = new Student();
Class classobj1 = stu.getClass();
System.out.println(classobj1.getName());
//æ¹å¼äºï¼æå¨éè¿è·¯å¾-ç¸å¯¹è·¯å¾ï¼
Class classobj2 = Class.forName("fanshe.Student");
System.out.println(classobj2.getName());
//æ¹å¼ä¸ï¼éè¿ç±»åï¼
Class classobj3 = Student.class;
System.out.println(classobj3.getName());
}
}
```
### åå°çåç
Javaåå°æºå¶æ¯å¨è¿è¡ç¶æä¸ï¼å¯¹äºä»»æä¸ä¸ªç±»ï¼é½è½å¤ç¥éè¿ä¸ªç±»ä¸çææå±æ§åæ¹æ³ï¼å¯¹äºä»»æä¸ä¸ªå¯¹è±¡ï¼é½è½å¤è°ç¨å®çä»»æä¸ä¸ªæ¹æ³å屿§ï¼è¿ç§å¨æè·åçä¿¡æ¯ä»¥å卿è°ç¨å¯¹è±¡çæ¹æ³çåè½ç§°ä¸ºjavaè¯è¨çåå°æºå¶ã
ç®åä¸å¥è¯ï¼åå°ææ¯å¯ä»¥å¯¹ç±»è¿è¡è§£åã
åå°å°±æ¯å¨ Java ç±»æ§è¡è¿ç¨ä¸çå è½½æ¥éª¤ä¸ï¼ä» .class åèç æä»¶ä¸æååºå
å«javaç±»çææä¿¡æ¯ï¼ç¶åå°åèç ä¸çæ¹æ³ï¼åéï¼æé 彿°çæ å°æ ç¸åºç MethodãFiledãConstructor çç±»ï¼ç¶åè¿è¡åç§æä½
### 注解çåç
注解çåºå±ä¹æ¯ä½¿ç¨åå°å®ç°çï¼æä»¬å¯ä»¥èªå®ä¹ä¸ä¸ªæ³¨è§£æ¥ä½ä¼ä¸ãæ³¨è§£åæ¥å£æç¹ç±»ä¼¼ï¼ä¸è¿ç³ææ³¨è§£ç±»éè¦å ä¸@interfaceï¼æ³¨è§£ç±»éé¢ï¼åªæ¯æåºæ¬ç±»åãStringåæä¸¾ç±»åï¼é颿æå±æ§è¢«å®ä¹ææ¹æ³ï¼å¹¶å
许æä¾é»è®¤å¼ã
https://blog.csdn.net/yuzongtao/article/details/83306182
**注解å¤çå¨**
è¿ä¸ªæ¯æ³¨è§£ä½¿ç¨çæ ¸å¿äºï¼åé¢æä»¬è¯´äºé£ä¹å¤æ³¨è§£ç¸å
³çï¼é£å°åºjavaæ¯å¦ä½å»å¤çè¿äºæ³¨è§£çå¢
ä»getAnnotationè¿å»å¯ä»¥çå°java.lang.classå®ç°äº**AnnotatedElement**æ¹æ³
```java
MyAnTargetType t = AnnotationTest.class.getAnnotation(MyAnTargetType.class);
```
```java
public final class Class