Javaèææº
ä¸ãä»ä¹æ¯Javaèææº
Javaèææºæ¯ä¸ä¸ªæ³è±¡ä¸çæºå¨,å¨å®é ç计ç®æºä¸éè¿è½¯ä»¶æ¨¡ææ¥å®ç°ãJavaèææºæèªå·±æ³è±¡ä¸ç硬件,å¦å¤çå¨ãå æ ãå¯åå¨ç,è¿å ·æç¸åºçæ令系ç»ã
为ä»ä¹è¦ä½¿ç¨Javaèææº
Javaè¯è¨çä¸ä¸ªé常éè¦çç¹ç¹å°±æ¯ä¸å¹³å°çæ å
³æ§ãè使ç¨Javaèææºæ¯å®ç°è¿ä¸ç¹ç¹çå
³é®ãä¸è¬çé«çº§è¯è¨å¦æè¦å¨ä¸åçå¹³å°ä¸è¿è¡,è³å°éè¦ç¼è¯æä¸åçç®æ 代ç ãèå¼å
¥Javaè¯è¨èææºå,Javaè¯è¨å¨ä¸åå¹³å°ä¸è¿è¡æ¶ä¸éè¦éæ°ç¼è¯ãJavaè¯è¨ä½¿ç¨æ¨¡å¼Javaèææºå±è½äºä¸å
·ä½å¹³å°ç¸å
³çä¿¡æ¯,使å¾Javaè¯è¨ç¼è¯ç¨åºåªéçæå¨Javaèææºä¸è¿è¡çç®æ 代ç (åèç ),å°±å¯ä»¥å¨å¤ç§å¹³å°ä¸ä¸å ä¿®æ¹å°è¿è¡ãJavaèææºå¨æ§è¡åèç æ¶,æåèç 解éæå
·ä½å¹³å°ä¸çæºå¨æ令æ§è¡ã
2.è°éè¦äºè§£Javaèææº
Javaèææºæ¯Javaè¯è¨åºå±å®ç°çåºç¡,对Javaè¯è¨æå ´è¶£ç人é½åºå¯¹Javaèææºæ个大æ¦çäºè§£ãè¿æå©äºç解Javaè¯è¨çä¸äºæ§è´¨,ä¹æå©äºä½¿ç¨Javaè¯è¨ã对äºè¦å¨ç¹å®å¹³å°ä¸å®ç°Javaèææºç软件人å,Javaè¯è¨çç¼è¯å¨ä½è 以åè¦ç¨ç¡¬ä»¶è¯çå®ç°Javaèææºç人æ¥è¯´,åå¿ é¡»æ·±å»ç解Javaèææºçè§èãå¦å¤,å¦æä½ æ³æ©å±Javaè¯è¨,ææ¯æå ¶å®è¯è¨ç¼è¯æJavaè¯è¨çåèç ,ä½ ä¹éè¦æ·±å ¥å°äºè§£Javaèææºã
3.Javaèææºæ¯æçæ°æ®ç±»å
Javaèææºæ¯æJavaè¯è¨çåºæ¬æ°æ®ç±»åå¦ä¸:
byte://1åèæ符å·æ´æ°çè¡¥ç
short://2åèæ符å·æ´æ°çè¡¥ç
int://4åèæ符å·æ´æ°çè¡¥ç
long://8åèæ符å·æ´æ°çè¡¥ç
float://4åèIEEE754å精度浮ç¹æ°
double://8åèIEEE754å精度浮ç¹æ°
char://2åèæ 符å·Unicodeå符
å ä¹ææçJavaç±»åæ£æ¥é½æ¯å¨ç¼è¯æ¶å®æçãä¸é¢ååºçåå§æ°æ®ç±»åçæ°æ®å¨Javaæ§è¡æ¶ä¸éè¦ç¨ç¡¬ä»¶æ è®°ãæä½è¿äºåå§æ°æ®ç±»åæ°æ®çåèç (æ令)æ¬èº«å°±å·²ç»æåºäºæä½æ°çæ°æ®ç±»å,ä¾å¦iaddãladdãfaddådaddæ令é½æ¯æ两个æ°ç¸å ,å ¶æä½æ°ç±»åå«æ¯intãlongãfloatådoubleãèææºæ²¡æç»boolean(å¸å°)ç±»å设置åç¬çæ令ãbooleanåçæ°æ®æ¯ç±integeræ令,å æ¬integerè¿åæ¥å¤ççãbooleanåçæ°ç»åæ¯ç¨byteæ°ç»æ¥å¤ççãèææºä½¿ç¨IEEE754æ ¼å¼çæµ®ç¹æ°ãä¸æ¯æIEEEæ ¼å¼çè¾æ§ç计ç®æº,å¨è¿è¡Javaæ°å¼è®¡ç®ç¨åºæ¶,å¯è½ä¼éå¸¸æ ¢ã
èææºæ¯æçå ¶å®æ°æ®ç±»åå æ¬:
object//对ä¸ä¸ªJavaobject(对象)ç4åèå¼ç¨
returnAddress//4åè,ç¨äºjsr/ret/jsr-w/ret-wæ令
注:Javaæ°ç»è¢«å½ä½objectå¤çã
èææºçè§è对äºobjectå é¨çç»æ没æä»»ä½ç¹æ®çè¦æ±ãå¨Sunå ¬å¸çå®ç°ä¸,对objectçå¼ç¨æ¯ä¸ä¸ªå¥æ,å ¶ä¸å å«ä¸å¯¹æé:ä¸ä¸ªæéæå该objectçæ¹æ³è¡¨,å¦ä¸ä¸ªæå该objectçæ°æ®ãç¨Javaèææºçåèç 表示çç¨åºåºè¯¥éµå®ç±»åè§å®ãJavaèææºçå®ç°åºæç»æ§è¡è¿åäºç±»åè§å®çåèç ç¨åºãJavaèææºç±äºåèç å®ä¹çéå¶ä¼¼ä¹åªè½è¿è¡äº32ä½å°å空é´çæºå¨ä¸ãä½æ¯å¯ä»¥å建ä¸ä¸ªJavaèææº,å®èªå¨å°æåèç 转æ¢æ64ä½çå½¢å¼ãä»Javaèææºæ¯æçæ°æ®ç±»åå¯ä»¥çåº,Java对æ°æ®ç±»åçå é¨æ ¼å¼è¿è¡äºä¸¥æ ¼è§å®,è¿æ ·ä½¿å¾åç§Javaèææºçå®ç°å¯¹æ°æ®ç解éæ¯ç¸åç,ä»èä¿è¯äºJavaçä¸å¹³å°æ å ³æ§åå¯
移æ¤æ§ã
äºãJavaèææºä½ç³»ç»æ
Javaèææºç±äºä¸ªé¨åç»æ:ä¸ç»æ令éãä¸ç»å¯åå¨ãä¸ä¸ªæ ãä¸ä¸ªæ ç¨åå æ¶éå (Garbage-collected-heap)ãä¸ä¸ªæ¹æ³åºåãè¿äºé¨åæ¯Javaèææºçé»è¾æ份,ä¸ä¾èµä»»ä½å®ç°ææ¯æç»ç»æ¹å¼,ä½å®ä»¬çåè½å¿ é¡»å¨çå®æºå¨ä¸ä»¥æç§æ¹å¼å®ç°ã
Javaæ令é
Javaèææºæ¯æ大约248个åèç ãæ¯ä¸ªåèç æ§è¡ä¸ç§åºæ¬çCPUè¿ç®,ä¾å¦,æä¸ä¸ªæ´æ°å å°å¯åå¨,åç¨åºè½¬ç§»çãJavaæ令éç¸å½äºJavaç¨åºçæ±ç¼è¯è¨ã
Javaæ令éä¸çæ令å å«ä¸ä¸ªååèçæä½ç¬¦,ç¨äºæå®è¦æ§è¡çæä½,è¿æ0个æå¤ä¸ªæä½æ°,æä¾æä½æéçåæ°ææ°æ®ã许å¤æ令没ææä½æ°,ä» ç±ä¸ä¸ªååèçæä½ç¬¦ææã
èææºçå å±å¾ªç¯çæ§è¡è¿ç¨å¦ä¸:
do{
åä¸ä¸ªæä½ç¬¦åè;
æ ¹æ®æä½ç¬¦çå¼æ§è¡ä¸ä¸ªå¨ä½;
}while(ç¨åºæªç»æ)
ç±äºæ令系ç»çç®åæ§,使å¾èææºæ§è¡çè¿ç¨ååç®å,ä»èæå©äºæé«æ§è¡çæçãæ令ä¸æä½æ°çæ°éå大å°æ¯ç±æä½ç¬¦å³å®çãå¦ææä½æ°æ¯ä¸ä¸ªåè大,é£ä¹å®åå¨ç顺åºæ¯é«ä½åèä¼å ãä¾å¦,ä¸ä¸ª16ä½çåæ°åæ¾æ¶å ç¨ä¸¤ä¸ªåè,å ¶å¼ä¸º:
第ä¸ä¸ªåè*256+第äºä¸ªåèåèç æ令æµä¸è¬åªæ¯åè对é½çãæ令tabltchålookupæ¯ä¾å¤,å¨è¿ä¸¤æ¡æ令å é¨è¦æ±å¼ºå¶ç4åèè¾¹ç对é½ã
2.å¯åå¨
Javaèææºçå¯åå¨ç¨äºä¿åæºå¨çè¿è¡ç¶æ,ä¸å¾®å¤çå¨ä¸çæäºä¸ç¨å¯åå¨ç±»ä¼¼ã
Javaèææºçå¯åå¨æåç§:
pc:Javaç¨åºè®¡æ°å¨ã
optop:æåæä½æ°æ 顶端çæéã
frame:æåå½åæ§è¡æ¹æ³çæ§è¡ç¯å¢çæéã
vars:æåå½åæ§è¡æ¹æ³çå±é¨åéåºç¬¬ä¸ä¸ªåéçæéã
Javaèææº
Javaèææºæ¯æ å¼ç,å®ä¸å®ä¹æ使ç¨å¯åå¨æ¥ä¼ éææ¥ååæ°,å ¶ç®çæ¯ä¸ºäºä¿è¯æ令éçç®æ´æ§åå®ç°æ¶çé«ææ§(ç¹å«æ¯å¯¹äºå¯åå¨æ°ç®ä¸å¤çå¤çå¨)ã
ææå¯åå¨é½æ¯32ä½çã
3.æ
Javaèææºçæ æä¸ä¸ªåºå:å±é¨åéåºãè¿è¡ç¯å¢åºãæä½æ°åºã
(1)å±é¨åéåº æ¯ä¸ªJavaæ¹æ³ä½¿ç¨ä¸ä¸ªåºå®å¤§å°çå±é¨åééãå®ä»¬æç §ä¸varså¯åå¨çåå移éæ¥å¯»åãå±é¨åéé½æ¯32ä½çãé¿æ´æ°åå精度浮ç¹æ°å æ®äºä¸¤ä¸ªå±é¨åéç空é´,å´æç §ç¬¬ä¸ä¸ªå±é¨åéçç´¢å¼æ¥å¯»åã(ä¾å¦,ä¸ä¸ªå ·æç´¢å¼nçå±é¨åé,å¦ææ¯ä¸ä¸ªå精度浮ç¹æ°,é£ä¹å®å®é å æ®äºç´¢å¼nån+1æ代表çåå¨ç©ºé´ã)èææºè§è并ä¸è¦æ±å¨å±é¨åéä¸ç64ä½çå¼æ¯64ä½å¯¹é½çãèææºæä¾äºæå±é¨åéä¸çå¼è£ è½½å°æä½æ°æ çæ令,ä¹æä¾äºææä½æ°æ ä¸çå¼åå ¥å±é¨åéçæ令ã
(2)è¿è¡ç¯å¢åº å¨è¿è¡ç¯å¢ä¸å å«çä¿¡æ¯ç¨äºå¨æé¾æ¥,æ£å¸¸çæ¹æ³è¿å以åå¼å¸¸ä¼ æã
·å¨æé¾æ¥
è¿è¡ç¯å¢å æ¬å¯¹æåå½åç±»åå½åæ¹æ³ç解éå¨ç¬¦å·è¡¨çæé,ç¨äºæ¯ææ¹æ³ä»£ç çå¨æé¾æ¥ãæ¹æ³çclassæ件代ç å¨å¼ç¨è¦è°ç¨çæ¹æ³åè¦è®¿é®çåéæ¶ä½¿ç¨ç¬¦å·ãå¨æé¾æ¥æ符å·å½¢å¼çæ¹æ³è°ç¨ç¿»è¯æå®é æ¹æ³è°ç¨,è£ è½½å¿ è¦ç类以解éè¿æ²¡æå®ä¹ç符å·,并æåé访é®ç¿»è¯æä¸è¿äºåéè¿è¡æ¶çåå¨ç»æç¸åºçå移å°åãå¨æé¾æ¥æ¹æ³ååé使å¾æ¹æ³ä¸ä½¿ç¨çå ¶å®ç±»çååä¸ä¼å½±åå°æ¬ç¨åºç代ç ã
·æ£å¸¸çæ¹æ³è¿å
å¦æå½åæ¹æ³æ£å¸¸å°ç»æäº,å¨æ§è¡äºä¸æ¡å ·ææ£ç¡®ç±»åçè¿åæ令æ¶,è°ç¨çæ¹æ³ä¼å¾å°ä¸ä¸ªè¿åå¼ãæ§è¡ç¯å¢å¨æ£å¸¸è¿åçæ åµä¸ç¨äºæ¢å¤è°ç¨è çå¯åå¨,并æè°ç¨è çç¨åºè®¡æ°å¨å¢å ä¸ä¸ªæ°å½çæ°å¼,以跳è¿å·²æ§è¡è¿çæ¹æ³è°ç¨æ令,ç¶åå¨è°ç¨è çæ§è¡ç¯å¢ä¸ç»§ç»æ§è¡ä¸å»ã
·å¼å¸¸åéè¯¯ä¼ æ
å¼å¸¸æ åµå¨Javaä¸è¢«ç§°ä½Error(é误)æException(å¼å¸¸),æ¯Throwableç±»çåç±»,å¨ç¨åºä¸çåå æ¯:â å¨æé¾æ¥é,å¦æ æ³æ¾å°æéçclassæ件ãâ¡è¿è¡æ¶é,å¦å¯¹ä¸ä¸ªç©ºæéçå¼ç¨
·ç¨åºä½¿ç¨äºthrowè¯å¥ã
å½å¼å¸¸åçæ¶,Javaèææºéåå¦ä¸æªæ½:
·æ£æ¥ä¸å½åæ¹æ³ç¸èç³»çcatchåå¥è¡¨ãæ¯ä¸ªcatchåå¥å å«å ¶æææ令èå´,è½å¤å¤ççå¼å¸¸ç±»å,以åå¤çå¼å¸¸ç代ç åå°åã
·ä¸å¼å¸¸ç¸å¹é çcatchåå¥åºè¯¥ç¬¦åä¸é¢çæ¡ä»¶:é æå¼å¸¸çæ令å¨å ¶æ令èå´ä¹å ,åççå¼å¸¸ç±»åæ¯å ¶è½å¤ççå¼å¸¸ç±»åçåç±»åãå¦ææ¾å°äºå¹é çcatchåå¥,é£ä¹ç³»ç»è½¬ç§»å°æå®çå¼å¸¸å¤çåå¤æ§è¡;å¦æ没ææ¾å°å¼å¸¸å¤çå,éå¤å¯»æ¾å¹é çcatchåå¥çè¿ç¨,ç´å°å½åæ¹æ³çææåµå¥çcatchåå¥é½è¢«æ£æ¥è¿ã
·ç±äºèææºä»ç¬¬ä¸ä¸ªå¹é çcatchåå¥å¤ç»§ç»æ§è¡,æ以catchåå¥è¡¨ä¸ç顺åºæ¯å¾éè¦çãå 为Java代ç æ¯ç»æåç,å æ¤æ»å¯ä»¥ææ个æ¹æ³çææçå¼å¸¸å¤çå¨é½æåºæåå°ä¸ä¸ªè¡¨ä¸,对任æå¯è½çç¨åºè®¡æ°å¨çå¼,é½å¯ä»¥ç¨çº¿æ§ç顺åºæ¾å°åéçå¼å¸¸å¤çå,以å¤çå¨è¯¥ç¨åºè®¡æ°å¨å¼ä¸åççå¼å¸¸æ åµã
·å¦ææ¾ä¸å°å¹é çcatchåå¥,é£ä¹å½åæ¹æ³å¾å°ä¸ä¸ª"æªæªè·å¼å¸¸"çç»æ并è¿åå°å½åæ¹æ³çè°ç¨è ,好åå¼å¸¸ååå¨å ¶è°ç¨è ä¸åçä¸æ ·ãå¦æå¨è°ç¨è ä¸ä»ç¶æ²¡ææ¾å°ç¸åºçå¼å¸¸å¤çå,é£ä¹è¿ç§éè¯¯ä¼ æå°è¢«ç»§ç»ä¸å»ãå¦æéè¯¯è¢«ä¼ æå°æ顶å±,é£ä¹ç³»ç»å°è°ç¨ä¸ä¸ªç¼ºççå¼å¸¸å¤çåã
(3)æä½æ°æ åº æºå¨æ令åªä»æä½æ°æ ä¸åæä½æ°,对å®ä»¬è¿è¡æä½,并æç»æè¿åå°æ ä¸ãéæ©æ ç»æçåå æ¯:å¨åªæå°éå¯åå¨æééç¨å¯åå¨çæºå¨(å¦Intel486)ä¸,ä¹è½å¤é«æå°æ¨¡æèææºçè¡ä¸ºãæä½æ°æ æ¯32ä½çãå®ç¨äºç»æ¹æ³ä¼ éåæ°,并ä»æ¹æ³æ¥æ¶ç»æ,ä¹ç¨äºæ¯ææä½çåæ°,并ä¿åæä½çç»æãä¾å¦,iaddæ令å°ä¸¤ä¸ªæ´æ°ç¸å ãç¸å ç两个æ´æ°åºè¯¥æ¯æä½æ°æ 顶ç两个åãè¿ä¸¤ä¸ªåæ¯ç±å åçæ令åè¿å æ çãè¿ä¸¤ä¸ªæ´æ°å°ä»å æ å¼¹åºãç¸å ,并æç»æååå°æä½æ°æ ä¸ã
æ¯ä¸ªåå§æ°æ®ç±»åé½æä¸é¨çæ令对å®ä»¬è¿è¡å¿ é¡»çæä½ãæ¯ä¸ªæä½æ°å¨æ ä¸éè¦ä¸ä¸ªåå¨ä½ç½®,é¤äºlongådoubleå,å®ä»¬éè¦ä¸¤ä¸ªä½ç½®ãæä½æ°åªè½è¢«éç¨äºå ¶ç±»åçæä½ç¬¦ææä½ãä¾å¦,åå ¥ä¸¤ä¸ªintç±»åçæ°,å¦ææå®ä»¬å½ä½æ¯ä¸ä¸ªlongç±»åçæ°åæ¯éæ³çãå¨Sunçèææºå®ç°ä¸,è¿ä¸ªéå¶ç±åèç éªè¯å¨å¼ºå¶å®è¡ãä½æ¯,æå°æ°æä½(æä½ç¬¦dupeåswap),ç¨äºå¯¹è¿è¡æ¶æ°æ®åºè¿è¡æä½æ¶æ¯ä¸èèç±»åçã
4.æ ç¨åå æ¶éå
Javaçå æ¯ä¸ä¸ªè¿è¡æ¶æ°æ®åº,ç±»çå®ä¾(对象)ä»ä¸åé 空é´ãJavaè¯è¨å ·ææ ç¨åå æ¶éè½å:å®ä¸ç»ç¨åºåæ¾å¼éæ¾å¯¹è±¡çè½åãJavaä¸è§å®å ·ä½ä½¿ç¨çæ ç¨åå æ¶éç®æ³,å¯ä»¥æ ¹æ®ç³»ç»çéæ±ä½¿ç¨åç§åæ ·çç®æ³ã
5.æ¹æ³åº
æ¹æ³åºä¸ä¼ ç»è¯è¨ä¸çç¼è¯å代ç ææ¯Unixè¿ç¨ä¸çæ£æ段类似ãå®ä¿åæ¹æ³ä»£ç (ç¼è¯åçjava代ç )å符å·è¡¨ãå¨å½åçJavaå®ç°ä¸,æ¹æ³ä»£ç ä¸å æ¬å¨æ ç¨åå æ¶éå ä¸,ä½è®¡åå¨å°æ¥ççæ¬ä¸å®ç°ãæ¯ä¸ªç±»æ件å å«äºä¸ä¸ªJavaç±»æä¸ä¸ªJavaçé¢çç¼è¯åç代ç ãå¯ä»¥è¯´ç±»æ件æ¯Javaè¯è¨çæ§è¡ä»£ç æ件ã为äºä¿è¯ç±»æ件çå¹³å°æ å ³æ§,Javaèææºè§èä¸å¯¹ç±»æ件çæ ¼å¼ä¹ä½äºè¯¦ç»ç说æãå ¶å ·ä½ç»è请åèSunå ¬å¸çJavaèææºè§èã