·¢ÐÅÈË: mendy (ÃϵÏ), ÐÅÇø: Java
±ê  Ìâ: JAVA ÓïÑԹ淶
·¢ÐÅÕ¾: ÄÏ´óС°ÙºÏÐÅÏ¢½»»»Õ¾ (Mon Apr 20 13:10:14 1998), תÐÅ

·¢ÐÅÈË: xyz (´óµÁÔô), ÐÅÇø: JAVA
±ê  Ìâ: JAVA ÓïÑԹ淶
·¢ÐÅÕ¾: '3m×Ͻð·Éºèm' (Fri Feb 13 17:36:00 1998) , תÐÅ


¡¶×ª×ÔˮľÇ廪¡·

        JavaÓïÑÔ¹æ¸ñ˵Ã÷(Òë×ÔJava language specification, ÂÔ¼ÓÏêÊö)

1.³ÌÐò½á¹¹
JavaÓïÑÔµÄÔ´³ÌÐò´úÂëÓÉÒ»¸ö»ò¶à¸ö±àÒëµ¥Ôª(compilation unit)×é
³É£¬Ã¿¸ö±àÒëµ¥ÔªÖ»Äܰüº¬ÏÂÁÐÄÚÈÝ(¿Õ¸ñºÍ×¢ÊͳýÍâ)£º
    * Ò»¸ö³ÌÐò°üÓï¾ä(package statement )
    * ÒýÈëÓï¾ä(import statements)
    * ÀàµÄÉùÃ÷(class declarations)
    * ½çÃæÉùÃ÷(interface declarations)
ÿ¸öJavaµÄ±àÒëµ¥Ôª¿É°üº¬¶à¸öÀà»ò½çÃæ£¬µ«ÊÇÿ¸ö±àÒ뵥ԪȴÖÁ
¶àÓÐÒ»¸öÀà»òÕß½çÃæÊǹ«¹²µÄ¡£
Java µÄÔ´³ÌÐò´úÂë±»±àÒëÖ®ºó£¬±ã²úÉúÁËJava×Ö½Ú´úÂë(bytecode)¡£
JavaµÄ×Ö½Ú´úÂëÓÉһЩ²»ÒÀÀµÓÚ»úÆ÷µÄÖ¸Áî×é³É£¬ÕâЩָÁîÄܱ»JavaµÄ
ÔËÐÐϵͳ(runtime system)ÓÐЧµØ½âÊÍ¡£JavaµÄÔËÐÐϵͳ¹¤×÷ÆðÀ´Èçͬһ
̨ÐéÄâ»ú¡£
ÔÚµ±Ç°µÄJavaʵÏÖÖУ¬Ã¿¸ö±àÒëµ¥Ôª¾ÍÊÇÒ»¸öÒÔ.javaΪºó׺µÄÎļþ¡£
ÿ¸ö±àÒëµ¥ÔªÓÐÈô¸É¸öÀ࣬±àÒëºó£¬Ã¿¸öÀàÉú³ÉÒ»¸ö.classÎļþ¡£.class
ÎļþÊÇJavaÐé»úÆ÷Âë¡£

2. ´Ê·¨ÎÊÌâ
ÔÚ±àÒëµÄ¹ý³ÌÖУ¬JavaÔ´³ÌÐò´úÂëÖеÄ×Ö·û±»»®·ÖΪһϵÁеıê¼Ç
(token)¡£Java±àÒëÆ÷¿ÉÒÔʶ±ðÎåÖÖ±ê¼Ç: ±êʶ·û¡¢¹Ø¼ü×Ö¡¢×ÖÃæÁ¿¡¢ÔË
Ëã·ûÒÔ¼°ÌØÊâ·Ö¸ô·û¡£×¢ÊÍÒÔ¼°ÖîÈç¿Õ¸ñ¡¢ÖƱí·û¡¢»»ÐзûµÈ×Ö·û £¬¶¼
²»ÊôÓÚ±êʶ֮ÁУ¬µ«ËûÃÇÈ´³£±»ÓÃÀ´·Ö¸ô±ê¼Ç¡£
Java³ÌÐòµÄ±àд²ÉÓ÷º´úÂëUnicode×Ö·û¼¯£¬Èô²ÉÓÃÆäËüµÄ×Ö·û¼¯£¬
ÔòÐèÔÚ±àÒëǰת»»³ÉUnicode¡£

2.1 ×¢ÊÍ
    JavaÓïÑÔÌṩÁË3ÖÖÐÎʽµÄ×¢ÊÍ£º
    //text      ´Ó//µ½±¾ÐнáÊøµÄËùÓÐ×Ö·û¾ù×÷ΪעÊͶø±»±àÒëÆ÷ºöÂÔ¡£
    /* text */   ´Ó/*µ½*/ ¼äµÄËùÓÐ×Ö·û»á±»±àÒëÆ÷ºöÂÔ¡£
/** text */ 
µ±ÕâÀà×¢ÊͳöÏÖÔÚÈκÎÉùÃ÷֮ǰʱ½«»á×÷ÌØÊâ´¦Àí£¬ËüÃDz»ÄÜÔÙÓÃ
ÔÚ´úÂëµÄÈκεط½¡£ÕâÀà×¢ÊÍÒâζ×ű»À¨ÆðÀ´µÄÕýÎIJ¿·Ö£¬Ó¦¸Ã×÷ΪÉù
Ã÷ÏîÄ¿µÄÃèÊö£¬¶ø±»°üº¬ÔÚ×Ô¶¯²úÉúµÄÎĵµÖС£

2.2  ±êʶ·û
±êʶ·ûµÄÊ××Ö·û±ØÐëÊÇÒ»¸ö×Öĸ£¬Ï»®Ïß("_")»òÃÀÔª·ûºÅ("$")¡£ ºó
ÃæµÄ×Ö·ûÒ²¿ÉÊÇÊý×Ö0-9¡£ JavaʹÓ÷º´úÂë×Ö·û¼¯£¬ÎªÁ˱ãÓÚʶ±ðºÃÒ»
ºÏ·¨±êʶ·û£¬ÏÂÃæÁгöËüµÄ¡°×Öĸ¡±£º
    * ´óд×Öĸ¡°A¡±¡«¡°Z¡±
    * Сд×Öĸ¡°a¡±¡«¡°z¡±
    * ·º´úÂ루Unicode£©ÖÐËùÓÐ×Ö·û±àÂëÔÚÊ®Áù½øÖÆÊý00C0֮ǰµÄ×Ö
·û¡£±êʶ·ûÖУ¬Ê××ÖĸºóµÄ×Ö·û¿ÉÒÔÊÇÈÎÒâµÄ¡£µ±È»£¬UnicodeÇø¶ÎÖÐ
ÄÇЩ±»±£Áô×÷ÌØÊâ×Ö·ûµÄ³ýÍâ¡£
ÓÉ´Ë£¬¡°garton¡±¼°¡°Mj¦µlner¡±¶¼ÊǺϷ¨±êʶ·û£¬µ«ÊÇ£¬°üÀ¨
ÖîÈç¡°¦Ð¡±µÄ×Ö·û´®È´²»ÊǺϷ¨µÄ¡£
ΪÁËÈ¡µÃ¸ü¶àµÄÓйطº´úÂë±ê×¼µÄÐÅÏ¢£¬Çë²ÎÔÄ¡°The Unicode 
Standard¡±£¬¡°World Wide Character Encoding version 1.0£¬volumes 1 £¦ 
2¡±£¬Unicode¹«Ë¾µÄFTPµØÖ·ÊÇunicode.org¡£

2.3 ¹Ø¼ü×Ö
     ÏÂÃæµÄ±êʶ·û±»±£ÁôÓÃ×÷¹Ø¼ü×Ö£¬ËûÃDz»ÄÜ×÷ÈÎºÎÆäËüµÄÓÃ;¡£
abstract     default     goto*       null         synchronized
boolean     do         if          package     this
break       double     implements   private      threadsafe  
byte        else       import       protected    throw
byvalve *    extends    instanceof    public       transient
case        false       int          return       true
catch       final       interface     short        try 
char        finally     long         static        void
class        float      native        super        while
const *      for        new         switch 
continue
    ÆäÖУ¬¼Ó*±ê¼ÇºóÊDZ»±£Áôµ«µ±Ç°È´Î´Ê¹Óõġ£

2.4 ×ÖÃæÁ¿
×ÖÃæÁ¿(literal)ÊÇijЩÀàÐÍÖµµÄ»ù±¾±íÊö£¬ÕâЩÀàÐͰüÀ¨ÕûÐÍ£¬¸¡µã
ÐÍ£¬²¼¶ûÁ¿£¬×Ö·û¼°×Ö·û´®¡£

2.4.1 ÕûÐÍ×ÖÃæÁ¿
ÕûÊý¿ÉÓÐÈýÖÖ±íʾÐÎʽ£º Ê®½øÖÆ£¬°Ë½øÖƺÍÊ®Áù½øÖÆ¡£Ò»¸öÊ®½øÖÆ
ÕûÐÍ×ÖÃæÁ¿ÓÉһϵÁеÄÊý×Ö×é³É£¬µ«ËüµÄµÚÒ»¸öÊý×Ö²»ÄÜÊÇ0(ÓÐʱʮ½ø
ÖÆÊý×ÖÒ²¿ÉÏóÏÂÃæ½²µÄÄÇÑù¼Óºó׺)¡£ÕûÊýÒ²¿É±í´ï³É°Ë½øÖÆ»òÊ®Áù½øÖÆ
ÐÎʽ¡£ÒÔ0¿ªÍ·µÄÕûÐÍ×ÖÃæÁ¿£¬Òâζ×ÅËüÊÇÒ»¸öÊ®Áù½øÖƵġ£Ê®Áù½øÖÆ
ÕûÊý¿ÉÒÔ°üÀ¨Êý×Ö0-9ÒÔ¼°×Öĸa-f¼°A-F¡£°Ë½øÖÆÕûÊýÖÐÔòÖ»ÄÜÊdzöÏÖ
Êý×Ö0-7¡£ÔÚ³¬¹ý32λËùÄܱíʾµÄ·¶Î§Ö®Ç°£¬ÕûÐÍ×ÖÃæÁ¿µÄÀàÐͼ´Îªint£¬
·ñÔòΪlongÐÍ¡£Ò»¸öÕûÐÍ×ÖÃæÁ¿¿Éͨ¹ý¼Óºó׺L»òl¶øÇ¿ÆÈ³ÉlongÐÍ¡£
    ÏÂÃæµÄ¾ùΪºÏ·¨µÄÕûÐÍ×ÖÃæÁ¿¡£
    2   2L   0777   

2.4.2 ¸¡µã×ÖÃæÁ¿
Ò»¸ö¸¡µã×ÖÃæÁ¿¿É°üÀ¨ÒÔϲ¿·Ö: Ò»¸öÊ®½øÖÆÕûÊý£¬Ò»¸öСÊýµã¡°.¡±£¬
СÊý²¿·Ö(ÁíÍâÒ»¸öÊ®½øÖÆÕûÊý)£¬Ö¸Êý²¿·Ö£¬Ò»¸öÀàÐͺó׺¡£Ö¸Êý²¿·Ö
ÊÇÒ»¸öe»òEºó¸úÒ»¸öÕûÊý¡£¸¡µã×ÖÃæÁ¿ÖÁÉÙ°üº¬ÓÐÒ»¸öÊý×Ö£¬Íâ¼Ó»ò
ÕßÒ»¸öСÊýµã»òÕßÒ»¸öe(»òE)£¬ÏÂÃæ¾ÙһЩ¸¡µã×ÖÃæÁ¿µÄÀý×Ó£º
    3.1415    3.1E12    .1e12   2E12
¾ÍÏóÔÚºóÃæÃèÊöµÄÄÇÑù£¬JavaÓïÑÔÓÐÁ½ÖÖ¸¡µãÀàÐÍ£º float ¼°
double£¬Óû§¿É°´ÒÔÏÂд·¨Çø·Ö£º 
    2.0d»ò2.0D        double ÐÍ
    2.0f»ò2.0F»ò2.0   floatÐÍ

2.4.3 ²¼¶û×ÖÃæÁ¿
   ²¼¶û(boolean)×ÖÃæÁ¿ÓÐÁ½¸öÖµ£º true¼°false¡£

2.4.4 ×Ö·û×ÖÃæÁ¿
×Ö·û×ÖÃæÁ¿ÊÇÒ»¸öÓɵ¥ÒýºÅÀ¨ÆðµÄ×Ö·û(»òÕßÊÇÓÉÒ»×é×Ö·ûÀ´±íÊö
Ò»¸ö×Ö·û)¡£×Ö·ûÊôÓÚcharÀàÐÍ£¬²¢ÇÒ¾ù´Ó·º´úÂë×Ö·û¼¯ÖеÃÀ´¡£¶øÏÂÃæ
ÁгöµÄתÒåÐòÁÐÔòÓÃÀ´ÃèÊöһЩ·ÇͼÐÎ×Ö·û£¬ËüÃÇÒÔ·´Ð±¸Ü¡°\¡±¿ªÊ¼ÒÔ
×÷תÒåÓá£

ÐøÐзûÍ·                \
»»ÐÐ           NL(LF)           \n
´¹Ö±ÖƱí·û     HT               \t
Í˸ñ           BS               \b
»Ø³µ           CR               \r
×ßÖ½»»Ò³       FF               \f
·´Ð±¸Ü         \                 \\
µ¥ÒýºÅ         '                  \'
Ë«ÒýºÅ         "                  \"
°Ë½øÖÆÊý      0ddd              \ddd
Ê®Áù½øÖÆÊý    0xdd              \xdd
·º´úÂë×Ö·û    0xdddd           \udddd

2.4.5 ´®×ÖÃæÁ¿
´®×ÖÃæÁ¿ÊÇË«ÒýºÅÒýÆðµÄÁã¸ö»ò¶à¸ö×Ö·ûµÄÐòÁС£Ã¿¸ö´®×ÖÃæÁ¿±»
¿´×÷ÊÇÒ»¸ö´®¶ÔÏ󣬶ø²¢·ÇÊÇÒ»¸ö×Ö·ûµÄÊý×飬ÀýÈç¡°abc¡±´´½¨ÁËÒ»
¸öеĴ®ÀàµÄʵÀý¡£ÏÂÃæµÄ¶¼ÊǺϷ¨µÄ´®×ÖÃæÁ¿£º
    " "       \\¿Õ´®
    "\" "     \\Ö»°üº¬Ò»¸öË«ÒýºÅµÄ´®
    "This is a string"
    "This is a \
         two-line string"

2.5  ÔËËã·û¼°ÌØÊâ·Ö¸ô·û
   ÏÂÃæÕâЩ×Ö·ûÔÚJavaÔ´³ÌÐòÖÐ×÷ÔËËã·û»ò·Ö¸ô·ûÓãº
   +  ¡ª  !  %   ^   &   *   £ü   ¡«   /  >   <
   (   )  {  }  [  ]  ; ?  :  £¬¡¤ =
   ÁíÍ⣬ÏÂÃæÕâЩ¸´ºÏ×Ö·û±»ÓÃ×÷ÔËËã·û£º
   ++    --   ==  <=   >=  !=  <<  >>
   >>>  +=   -=   *=  /=   &=  /=
   ^=  %=  <<=  >>=  >>>=  ¡¬   &&
   ºóÃæ»¹ÒªÔÚÔËËã·ûÒ»½ÚÖÐ×÷Ïêϸ½éÉÜ¡£

3. ÀàÐÍ
ÈκÎÒ»¸ö±äÁ¿»ò±í´ïʽ¶¼ÓÐÒ»¸öÀàÐÍ£¬ÀàÐ;ö¶¨±äÁ¿¿ÉÄܵÄȡֵ·¶
Χ£¬¾ö¶¨¶ÔÕâЩֵÔÊÐíµÄ²Ù×÷£¬ÒÔ¼°ÕâЩ²Ù×÷µÄÒâÒåÊÇʲô¡£JavaÓïÑÔ
ÖÐÌṩÁËÄÚÖö¨ÒåÀàÐÍ£¬³ÌÐòÔ±Ò²¿ÉÒÔÀûÓÃÀ༰½çÃæ(interface)»úÖÆ¹¹Ôì
ÐÂÀàÐÍ¡£
JavaÓïÑÔÓÐÁ½ÖÖÀàÐÍ£º ¼òµ¥ÀàÐͺ͸´ºÏÀàÐÍ¡£¼òµ¥ÀàÐÍÖ¸ÄÇЩ²»ÄÜ
ÔÙ·Ö¸îµÄÔ­×ÓÀàÐÍ¡£È磺ÕûÐÍ¡¢¸¡µãÐÍ¡¢²¼¶ûÐÍ¡¢×Ö·ûÐ;ùΪ¼òµ¥ÀàÐÍ¡£
¸´ºÏÀàÐͽ¨Á¢ÔÚ¼òµ¥ÀàÐ͵Ļù´¡ÉÏ¡£JavaÓïÑÔÓÐÈýÖÖ¸´ºÏÀàÐÍ£ºÊý×é¡¢
À༰½çÃæ¡£ÔÚ±¾½ÚÖУ¬ÎÒÃÇÖ÷ÒªÌÖÂÛ¼òµ¥ÀàÐͼ°Êý×é¡£

3.1 ÊýÖµÀàÐÍ
3.1.1 ÕûÊýÀàÐÍ
ÕûÊýÓëC¼°C++ÖÐÏàËÆ£¬µ«ÓÐÁ½µãÇø±ð£º ÆäÒ»£¬ËùÓеÄÕûÊýÀàÐÍ
¾ùÊǶÀÁ¢ÓÚ»úÆ÷µÄ£»Æä¶þ£¬¶ÔijЩ´«Í³µÄ¶¨Òå×÷³ö¸Ä±ä£¬ÒÔ·´Ó³×ÔCÎÊ
ÊÀÒÔÀ´Ëù´øÀ´µÄ±ä»¯£¬ËÄÖÖÕûÊýÀàÐÍ·Ö±ð¾ßÓÐ8λ¡¢16λ¡¢32λ¼°64
λµÄ¿í¶È£¬²¢ÇÒ¾ùÊÇÓзûºÅµÄ(signed)¡£ÈçÏÂËùʾ£º

¿í¶È
ÀàÐÍÃû
8
byte
16
short
32
int 
64
long

Ò»¸ö±äÁ¿µÄÀàÐͲ»»áÖ±½ÓÓ°ÏìËüµÄ´æ´¢µÄ·ÖÅ䣬ÀàÐͽö½ö¾ö¶¨±äÁ¿
µÄËãÊõÐÔÖÊÒÔ¼°ºÏ·¨µÄȡֵ·¶Î§¡£Èç¹û°ÑÒ»¸ö³¬³öºÏ·¨·¶Î§µÄÖµ¸³¸øÒ»
±äÁ¿£¬ÄÇôÕâ¸öÖµ½«ÊǶԺϷ¨ÖµÓòȡģºóµÄÖµ¡£

3.1.2 ¸¡µãÀàÐÍ
¹Ø¼ü×Öfloat±íʾµ¥¾«¶È(32λ)£¬¶ødoubleÔò±íʾ˫¾«¶È(64λ)£¬Á½
¸öfloatÐÍÊýÔËËãµÄ½á¹ûÈÔÊÇfloatÐÍ£¬ÈôÓÐÆäÖÐ֮һΪdoubleÐÍ£¬Ôò½á
¹ûΪdoubleÐÍ¡£¸¡µãÔËËã¼°Êý¾Ý¸ñʽ°´IEEE754Öе͍Ò壬ϸ½ÚÎÊÌâÇë
²ÎÔÄ ¡°¸½Â¼A£º ¸¡µã¡±ÖÐÓйظ¡µãʵÏÖµÄϸ½Ú¡£

3.1.3 ×Ö·ûÀàÐÍ
JavaÈ«²¿Ê¹Ó÷º´úÂë×Ö·û¼¯£¬Òò´ËcharÀàÐÍÊý¾Ý±»¶¨Òå³ÉÒ»¸ö16
λµÄÎÞ·ûºÅÕûÊý¡£

3.2 ²¼¶ûÀàÐÍ
µ±Ò»¸ö±äÁ¿µÄȡֵ»òΪture»òΪfalse£¬»òÕßÊǵ±Ò»¸ö·½·¨µÄ·µ»ØÖµÎªture»òfalseʱ£¬Ëü?
Ƕ¼ÊDz¼¶ûÀàÐ͵ġ£ÁíÍ⣬¹ØÏµÔËËãµÄ½á¹ûÒàÊDz?
¶ûÐ͵ġ£  
    ²¼¶ûÖµ²»ÊÇÊýÖµÐÍ£¬Òò´Ë²»ÄÜÓÃÇ¿ÖÆÀàÐÍת»»°ÑËüÃÇת»¯³ÉÊýÖµ¡£

3.3 Êý×é
Êý×éÔÚJavaÓïÑÔÖÐÊôµÚÒ»Àà¶ÔÏó¡£ÓÉËüÃÇ´úÌæÁËÖ¸ÕëÔËË㣬ËùÓеÄ
¶ÔÏó(°üÀ¨Êý×é)¶¼¿Éͨ¹ý±êʶÀ´ÒýÓ᣼´Ê¹±»µ±×÷ÊýÔËË㣬±êʶµÄÖµÒ²
²»Ó¦±»ÆÆ»µ¡£Í¨¹ýnewÔËËã·û¿É´´½¨Ò»¸öÊý×é¡£
    char s[]=new char[30];
Êý×éµÚÒ»ÔªËØµÄϱêΪ0£¬ÔÚÉùÃ÷ÖÐÖ¸¶¨Î¬ÊýÊDz»ÔÊÐíµÄ¡£Ã¿´Î¶¼
±ØÐëÏÔʽµØÓÃnew·ÖÅäÊý×飺
    int i [] =new int [3]; 
    JavaÓïÑÔ²»Ö§³Ö¶àάÊý×飬µ«ÊÇ£¬³ÌÐòԱȴ¿ÉÒÔ´´½¨Êý×éµÄÊý×é¡£
    int i [ ]  [ ]=new int [3][4];
    ÖÁÉÙÓÐһάҪÃ÷È·¸ø¶¨£¬¶øÆäËüάÔò¿ÉÔÚÒÔºóÔÙÈ·¶¨¡£ÀýÈ磺
    int i[] []=new int [3] [ ]
    ÊÇÒ»¸öºÏ·¨µÄÉùÃ÷¡£
³ýÁËÔÚ±äÁ¿Ãû¼°·½·¨Ãûºó¸ú·½À¨ºÅÕâÖÖC·ç¸ñµÄÉùÃ÷Ö®Í⣬JavaÓï
ÑÔÔÊÐí·½À¨ºÅ¸úÔÚÊý×éÀàÐÍÖ®ºó£¬ÏÂÃæÁ½ÐÐÊǵȼ۵ģº 
    int iarray[ ];
    int [ ] iarray;
    ͬÑùµØ£¬·½·¨ÉùÃ÷Ò²Ò»Ñù£º
    byte f(int n)[ ];
    byte [ ] f(int n);
    ÔËÐÐʱ¼ì²éϱ걣֤ËüÃÇÊǺϷ¨µÄ£º
    int a[ ]=new int [10];
    a[5]=1;
    a[1]=a[0]+a[2];
a[-1]=4; // ÔËÐÐʱÒý·¢Ò»¸öArrayIndexOutOfBoundsException(Êý×éÏÂ
±êÔ½½ç)Òì³£
a[10]=2; //ÔËÐÐʱÒý·¢Ò»¸öArrayIndexOutOfBoundsException(Êý×éÏÂ
±êÔ½½ç)Òì³£

    Êý×éµÄ´óС±ØÐëʹÓÃÕûÊý±í´ïʽ£º
    int n;
    float arr[ ]=new float[n+1]
    Êý×éµÄ³¤¶È¿Éͨ¹ý.length ²éÕÒ£º
    int a[] []=new int [10][3];
    println (a.length)     //´òÓ¡³ö10
    println (a[0].length)  //´òÓ¡³ö3¡£

3.3.1  Êý×éϸ½Ú
ÎÒÃÇËù¶¨ÒåµÄÊý×é¶¼ÊÇObjectÀàµÄÒ»¸ö×ÓÀàµÄʵÀý£¬ÔÚÀàµÄ²ã´Î½á
¹¹ÖÐÓÐÒ»¸ö±»³ÆÎªArrayµÄ×ÓÀ࣬ËüÓÐÒ»¸öʵÀý±äÁ¿¡°length¡±¡£¶Ôÿ
Ò»¸ö»ù±¾ÀàÐÍ£¬¶¼ÓÐÒ»¸öÏàÓ¦µÄArrayµÄ×ÓÀࡣͬÀí£¬Ã¿Ò»¸öÀàÒ²¶¼ÓÐ
Ò»¸öÏàÓ¦µÄArray×ÓÀà´æÔÚ¡£ÀýÈ磺   new Thread[n]  ´´½¨Ò»¸öThread[ ]
µÄʵÀý¡£Èç¹ûÀàAÊÇÀàBµÄ³¬À࣬ÄÇô£¬A[]ÊÇB[]µÄ³¬À࣬¼ûÏÂͼ£º

            Object 

   Array                  A

int[]  float[]  A[]            B

             B[]

    Òò´Ë£¬¿ÉÒÔ°ÑÊý×鸳¸øÒ»¸öObject±äÁ¿¡£
    Object  o;
    int a[]=new int [10];
    o=a;
    ²¢ÇÒ¿Éͨ¹ýÇ¿ÖÆÀàÐÍת»»°Ñobject±äÁ¿¸³¸øÒ»Êý×é±äÁ¿¡£
    a=(int [])o;
    ArrayÀà±¾Éí²»ÄÜÏÔʽµØ²úÉú×ÓÀà¡£

4. Àà
Àà(class)ÊÇ´«Í³ÃæÏò¶ÔÏó±à³ÌÄ£Ð͵ÄÏóÕ÷¡£ËüÃÇÖ§³ÖÊý¾Ý³éÏóÒÔ¼°Êµ
ÏÖ¶ÔÊý¾ÝµÄÔ¼Êø£¬ÔÚJavaÖУ¬Ã¿Ò»¸öеÄÀà´´½¨Ò»¸öÐÂÀàÐÍ¡£
ÒªÏëµÃµ½Ò»¸öеÄÀ࣬³ÌÐòÔ±±ØÐëÊ×ÏÈÕÒµ½Ò»¸öÒÑÓеÄÀ࣬ÐÂÀ༴
ÔÚÕâ¸öÒÑÓÐÀàµÄ»ù´¡ÉϹ¹Ô죬ÎÒÃdzÆÖ®ÎªÅÉÉú(derived)¡£ÅÉÉú³öµÄÀàÒà³Æ
ΪԭÀ´ÀàµÄ×ÓÀ࣬¶øÕâ¸öÀàÎÒÃdzÆÎª³¬Àà(super class)¡£
ÀàµÄÅÉÉú¾ßÓд«µÝÐÔ£º Èç¹ûBÊÇAµÄ×ÓÀ࣬CÊÇBµÄ×ÓÀ࣬ÔòC
ÊÇAµÄ×ÓÀà¡£
Ò»¸öÀàµÄÖ±½Ó³¬ÀàÒÔ¼°Ö¸Ê¾Õâ¸öÀàÈçºÎʵÏֵĽçÃæ(interface)£¬ÔÚÀà
µÄÉùÃ÷ÖУ¬Óɹؼü×Öextends¼°implements±ê³ö¡£ÈçÏÂʾ(ºÚÌå±íʾ¹Ø¼ü×Ö)£º£º
    [doc_ comment]  [modifer]  class ClassName
    extends  Superclassname
    implements  interface {£¬interface } ] {
          class body
    }
    ¾ÙÀý£º
    /** 2 dimension point */
    public class Points {
         float x£¬y;
         ......
    }
    /** printable point */
   class PinttablePoint extends Points implements Printable {
        ......
        public void Print ( ) {
        }
    }
ËùÓеÄÀà¾ù´ÓÒ»¸ö¸ùÀà ObjectÖÐÅÉÉú³öÀ´¡£³ýObjectÖ®ÍâµÄÈκÎÀà
¶¼ÓÐÒ»¸öÖ±½Ó³¬Àà¡£Èç¹ûÒ»¸öÀàÔÚÉùÃ÷ʱδָÃ÷ÆäÖ±½Ó³¬À࣬ÄÇôȱʡ
¼´ÎªObject¡£ÈçÏÂÊö£º
    class Point {
        float x£¬y
    }
    ÓëÏÂÃæÐ´·¨µÈ¼Û
    class Point extends Object {
         float  x£¬  y£»
    }
JavaÓïÑÔ½öÖ§³Öµ¥¼Ì³Ð£¬Í¨¹ýÒ»¸ö±»³Æ×÷¡°½çÃæ¡±µÄ»úÖÆ£¬À´Ö§³Ö
ijЩÔÚÆäËüÓïÑÔÖÐÓöà¼Ì³ÐʵÏֵĻúÖÆ(Ïê¼û¡°½çÃæ¡±Ò»½Ú)¡£JavaÖ®Ëù
ÒÔûÓвÉÓÃC++µÄ¶à¼Ì³Ð»úÖÆ£¬ÊÇΪÁ˱ÜÃâ¶à¼Ì³Ð´øÀ´µÄÖî¶à²»±ã£¬Àý
È磺¿ÉÄܲúÉúµÄ¶þÒåÐÔ£¬±àÒëÆ÷¸ü¼Ó¸´ÔÓ£¬³ÌÐòÄÑÒÔÓÅ»¯µÈÎÊÌâ¡£

4.1 ÀàÀàÐÍÖ®¼äµÄÇ¿ÖÆ×ª»»
JavaÓïÑÔÖ§³ÖÔÚÁ½¸öÀàÐÍÖ®¼äµÄÇ¿ÖÆ×ª»»£¬ÒòΪÿ¸öÀ༴ÊÇÒ»¸öÐÂ
µÄÀàÐÍ¡£JavaÖ§³ÖÀàÀàÐÍÖ®¼äµÄÇ¿ÖÆ×ª»»£¬Èç¹ûBÊÇAµÄ×ÓÀ࣬ÄÇôB
µÄÒ»¸öʵÀýÒà¿É×÷ΪAµÄʵÀýÀ´Ê¹Óã¬ËäÈ»²»ÐèÒªÏÔʽµÄת»»£¬µ«ÏÔʽ
ת»»ÒàÊǺϷ¨µÄ£¬Õâ±»³Æ×÷ÍØ¿í(widening)¡£Èç¹ûAµÄÒ»¸öʵÀý£¬Ïëµ±×÷
BµÄʵÀýʹÓ㬳ÌÐòÔ±¾ÍӦдһ¸öÀàÐÍת»»½Ð×÷Ï÷Õ­£¨narrowing£©µÄÇ¿
ÖÆ¡£´ÓÒ»¸öÀൽÆä×ÓÀàµÄÇ¿ÖÆ×ª
»»ÔÚÔËÐÐʱҪ×÷ÀýÐеļì²éÒÔÈ·±£Õâ¸ö¶ÔÏó¾ÍÊÇÆä×ÓÀàµÄÒ»¸öʵÀý
(»òÆä×ÓÀàÖ®Ò»)¡£ÐÖµÜÀàÖ®¼äµÄÇ¿ÖÆÀàÐÍת»»ÊÇÒ»¸ö±àÒë´íÎó£¬ÀàµÄÇ¿ÖÆ×ª»»µÄÓï·¨ÈçÏÂ?
?
    (classname) ref
    ÆäÖУ¬(classname)ÊÇҪת»»µÄÄ¿µÄÀ࣬¶ørefÊDZ»×ª»»µÄ¶ÔÏó¡£
Ç¿ÖÆ×ª»»½ö½öÓ°Ïìµ½¶ÔÏóµÄÒýÓ㬶ø²»»áÓ°Ïì¶ÔÏó±¾Éí¡£È»¶ø£¬¶ÔʵÀý
±äÁ¿µÄ·ÃÎÊÈ´Êܵ½¶ÔÏó
ÒýÓõÄÀàÐ͵ÄÓ°Ïì¡£Ò»¸ö¶ÔÏó´ÓÒ»¸öÀàÐ͵½ÁíÒ»ÀàÐ͵ÄÇ¿ÖÆ×ª»»ºó£¬
¿ÉÒÔʹͬһ±äÁ¿Ãû¶Ô²»Í¬µÄʵÀý±äÁ¿·ÃÎÊ¡£
    class   ClassA{
           String  name = "ClassA"
    }
    class ClassB  extends  ClassA {           //ClassBÊÇClassAµÄ×ÓÀà
         String name="ClassB";
    }
    class AccessTest {
        void test( ) {
            ClassB  b=new ClassB( );
            println (b.name);                //´òÓ¡£º ClassB
            ClassA  a
            a=(ClassA)b;
            println (a.name);               //´òÓ¡£º ClassA
        }
    }

4.2 ·½·¨
·½·¨(method)ÊÇ¿ÉÊ©ÓÚ¶ÔÏó»òÀàÉϵIJÙ×÷£¬ËüÃǼȿÉÔÚÀàÖУ¬Ò²¿ÉÔÚ
½çÃæÖÐÉùÃ÷¡£µ«ÊÇËûÃÇÈ´Ö»ÄÜÔÚÀàÖÐʵÏÖ(JavaÖÐËùÓÐÓû§¶¨ÒåµÄ²Ù×÷¾ù
Ó÷½·¨À´ÊµÏÖ)¡£
    ÀàÖеķ½·¨ÉùÃ÷°´ÒÔÏ·½Ê½£º 
    [Doc_ comment]  [Access Specifiers]  ReturnType  methodName(parameterList) 
{
                method body(±¾µØµÄnative¼°³éÏóµÄ·½·¨Ã»ÓÐÌ岿·Ö)
    }
    
³ý¹¹Ô캯Êý¿ÉÒÔÎÞ·µ»ØÀàÐÍÍ⣬ÆäÓàµÄ·½·¨¶¼ÓÐÒ»¸ö·µ»ØÀàÐÍ¡£Èç
¹ûÒ»¸ö²»Êǹ¹Ô캯ÊýµÄ·½·¨²»·µ»ØÈκÎÖµ£¬ÄÇôËü±ØÐëÓÐÒ»¸övoidµÄ·µ
»ØÀàÐÍ¡£
²ÎÊý±íÓɶººÅ·Ö¸ôµÄ³É¶ÔµÄÀàÐͼ°²ÎÊýÃû×é³É£¬Èç¹û·½·¨ÎÞ²ÎÊý£¬
Ôò²ÎÊý±íΪ¿Õ¡£·½·¨ÄÚ²¿¶¨ÒåµÄ±äÁ¿(¾Ö²¿±äÁ¿)²»ÄÜÒþ²ØÍ¬Ò»·½·¨µÄÆä
Ëü±äÁ¿»ò²ÎÊý¡£ÀýÈ磺 Èç¹ûÒ»¸ö·½·¨´øÒÔÃûΪiµÄ²ÎÊýʵÏÖ£¬ÇÒ·½·¨ÄÚ
ÓÖ¶¨ÒåÒ»¸öÃûΪiµÄ¾Ö²¿±äÁ¿£¬Ôò»á²úÉú±àÒë´íÎó£¬ÀýÈ磺
    class Rectangle {
         void vertex (int i£¬int j)  {
             for (int i=0; i<=100; i++)  {         //³ö´í
             ¡­ 
             }
         }
    }
    ·½·¨ÌåÄÚÑ­»·Óï¾äÖÐÉùÃ÷µÄiÊÇÒ»¸ö±àÒë´íÎó¡£

JavaÓïÑÔÔÊÐí¶à̬·½·¨ÃüÃû£¬¼´ÓÃÒ»¸öÃû×ÖÉùÃ÷·½·¨£¬Õâ¸öÃû×ÖÒÑ
ÔÚÕâ¸öÀà»òÆä³¬ÀàÖÐʹÓùý£¬´Ó¶øÊµÏÖ·½·¨µÄ¸²¸Ç(overriding)¼°ÖØÔØ
(overloadding)¡£Ëùν¸²¸ÇÊǶԼ̳ÐÀ´µÄ·½·¨ÌṩÁíÒ»ÖÖ²»Í¬µÄʵÏÖ¡£¶ø
ÖØÔØÊÇÖ¸ÉùÃ÷Ò»¸ö·½·¨£¬ËüÓëÁíÍâÒ»¸ö·½·¨ÓÐÏàͬµÄÃû×Ö£¬µ«²ÎÊý±í²»Í¬¡£
×¢£º ·µ»ØÀàÐͲ»ÄÜÓÃÀ´Çø±ð·½·¨£¬¼´ÔÚÒ»¸öÀàµÄ·¶Î§ÄÚ£¬¾ßÓÐÏàͬ
µÄÃû×Ö£¬ÏàͬµÄ²ÎÊý±í(°üÀ¨¸öÊý¡¢Î»Öü°ÀàÐÍ)µÄ·½·¨£¬±ØÐë·µ»ØÏàͬ
µÄÀàÐÍ¡£ÈôÕâÑùµÄÁ½¸ö·½·¨Óв»Í¬µÄ·µ»ØÀàÐÍ£¬½«»á²úÉúÒ»¸ö±àÒë´íÎó¡£


4.2.1 ʵÀý±äÁ¿
ʵÀý±äÁ¿(instance variables)ÊÇÖ¸ÄÇЩÔÚÀàÄÚÉùÃ÷£¬µ«ÔÚ·½·¨µÄ×÷ÓÃ
ÓòÖ®ÍâÉÐδ±»static±ê¼ÇµÄ±ä( ²ÎÕÕ ¡°¾²Ì¬·½·¨£¬±äÁ¿¼°³õʼ»¯¡±¶Î)¡£
¶øÔÚÒ»¸ö·½·¨µÄ×÷ÓÃÓòÖ®ÄÚÉùÃ÷µÄ±äÁ¿ÊǾֲ¿±äÁ¿¡£ÊµÀý±äÁ¿¿ÉÒÔÓÐÐÞ
Êηû(¼ûÐÞÊηû)¡£
ʵÀý±äÁ¿¿ÉÒÔÊÇÈκεÄÀàÐÍ£¬²¢ÇÒ¿ÉÒÔÓгõʼֵ¡£Èç¹ûÒ»¸öʵÀý±ä
Á¿ÎÞ³õʼֵ£¬Ëü½«±»³õʼ»¯³É0¡£²¼¶ûÐͱäÁ¿±»³õʼ»¯³Éflase£¬¶ÔÏó±»
³õʼ»¯³Énull¡£ÏÂÃæÊÇÒ»¸öʵÀý±äÁ¿j¾ßÓгõʼ»¯ÖµµÄÀý×Ó£º
    class A{
      int j =23;
       ¡­¡­
    }

4.2.2  this ºÍsuper±äÁ¿
ÔÚÒ»¸ö·Ç¾²Ì¬·½·¨µÄ×÷ÓÃÓòÄÚ£¬thisÕâ¸öÃû×Ö´ú±íÁ˵±Ç°¶ÔÏó¡£Àý
È磺 Ò»¸ö¶ÔÏó¿ÉÄÜÐèÒª°Ñ×Ô¼º×÷Ϊ²ÎÊý´«¸øÁíÒ»¸ö¶ÔÏóµÄ·½·¨£º
    class MyClass {
         void Method (OtherClass obj) {
             ¡­
             obj.Method (this)
              ¡­
         }
    }
     ²»ÂÛºÎʱ£¬Ò»¸ö·½·¨ÒýÓÃËü×Ô¼ºµÄʵÀý±äÁ¿¼°·½·¨Ê±£¬ÔÚÿ¸öÒýÓÃ
µÄÇ°Ãæ¶¼Òþº¬×Å¡°this¡±¡£
È磺
    class Foo {
        int a£¬b£¬c;
        ......
        void myPrint ( ) {
            print (a+ "\n");           //  a=="this.a"
        }
        ......
     }
     super±äÁ¿ÀàËÆÓÚthis±äÁ¿¡£this±äÁ¿Êµ¼ÊÉÏÊǶԵ±Ç°¶ÔÏóµÄÒýÓã¬
ËüµÄÀàÐ;ÍÊǰüº¬µ±Ç°ÕýÔÚ´¦ÀíµÄ·½·¨µÄÀà¡£¶øsuper±äÁ¿ÔòÊÇ¶ÔÆä³¬Àà
ÀàÐͶÔÏóµÄÒýÓá£


4.2.3 ÉèÖþֲ¿±äÁ¿
·½·¨¶¼Òª¾­¹ýÑϸñµÄ¼ì²é£¬ÒÔÈ·±£ËùÓеľֲ¿±äÁ¿(ÔÚ·½·¨ÄÚÉùÃ÷µÄ
±äÁ¿)ÔÚ±»ÒýÓÃ֮ǰÒÑÉè³õ£¬±»³õʼ»¯Ö®Ç°¾ÍʹÓþֲ¿±äÁ¿ÊÇÒ»¸ö±àÒë´í
Îó¡£

4.3 ¸²¸Ç·½·¨
ÒªÏ븲¸Ç(overiding)Ò»¸ö·½·¨£¬±ØÐëÔÚÉùÃ÷Õâ¸ö·½·¨µÄÀàµÄ×ÓÀàÖÐÉù
Ã÷Ò»¸öÓëËü¾ßÓÐÏàͬÃû×Ö£¬Ïàͬ·µ»ØÀàÐÍ£¬ÒÔ¼°Ïàͬ²ÎÊý±íµÄ·½·¨¡£µ±
×ÓÀàµÄʵÀýµ÷ÓÃÕâ¸ö·½·¨Ê±£¬±»µ÷ÓõÄÊÇж¨ÒåµÄ·½·¨¶ø²»ÊÇ×î³õµÄÄÇ
¸ö¡£±»¸²¸ÇÁ˵ķ½·¨¿Éͨ¹ýsuper±äÁ¿À´µ÷Óã¬ÈçÏ£º
    setThermostat(¡­)              //Ö¸¸²¸ÇµÄ·½·¨
    super. setThermostat(¡­)        //Ö¸±»¸²¸ÇµÄ·½·¨

4.4 ÖØÔØµÄÈ϶¨
ÖØÔØ(overload)µÄ·½·¨ÓëÒÑÓеÄij¸ö·½·¨Í¬Ãû£¬µ«ÊDZäÔªµÄ¸öÊý¼°/
»òÀàÐͲ»Í¬£¬ÖØÔصÄÈ϶¨ÊÇÒª¾ö¶¨µ÷ÓõÄÊÇÄÄÒ»¸ö·½·¨£¬ÔÚÈ϶¨ÖØÔصÄ
·½·¨Ê±£¬²»¿¼ÂÇ·µ»ØÀàÐÍ¡£·½·¨¿ÉÒÔÔÚͬһÀàµÄÄÚ²¿ÖØÔØ£¬ÀàÄÚ²¿·½·¨
ÉùÃ÷µÄ˳Ðò²¢²»ÖØÒª¡£
¿Éͬʱ¸Ä±ä±äÔª¸öÊýºÍÀàÐÍÀ´ÊµÏÖ·½·¨µÄÖØÔØ¡£ ±àÒëÆ÷È϶¨ÏàÆ¥Åä
µÄ·½·¨Ê±ÒÔ×îµÍµÄÀàÐÍת»»¿ªÏúΪ׼¡£Ö»ÓоßÓÐÏàͬÃû×Ö¼°Ïàͬ±äÔª¸ö
ÊýµÄ·½·¨²Å»áÓÅÏÈ¿¼ÂÇ¡£ËùÓбäÔª¶¼±ØÐëת»»£¬ÊÇÆ¥Åä·½·¨Ê±µÄ×î´ó¿ª
Ïú¡£ÓÐÁ½ÖÖ±äÔªÀàÐÍÊDZØÐ迼Âǵģº¶ÔÏóÀàÐͺͻù±¾ÀàÐÍ¡£
¶ÔÏóÀàÐͼäת»»µÄ¿ªÏúµÄ´óСָÀàÊ÷ÉÏʵÔÚ²ÎÊýµÄÀàÓëÔ­ÐͲÎÊýµÄ
ÀàÖ®¼äÁ¬ÏߵĸöÊý¡£Ö»¿¼ÂÇÍØ¿íÐÍת»»(¶ÔÏóÀàÐÍת»»µÄÏêϸÐÅÏ¢£¬Çë²Î
ÔÄ¡°ÀàÖ®¼äµÄÇ¿ÖÆÀàÐÍת»»¡±)¡£¶ÔÓÚÀàÐÍÍêȫƥÅäµÄ±äÔª£¬ÎÞÐë½øÐÐת
»»£¬ËüÃǵĿªÏúΪÁã¡£

    »ù±¾ÀàÐ͵Äת»»¿ªÏú°´ÏÂ±í¼ÆË㣬¿ªÏúΪÁãÊÇÑϸñÆ¥Åä¡£
                                to
                 byte   short   char    int   long   float   double
      byte         0     1              2         3     4      6      7
      short        10     0      10    1     2      4      5
from  char         11    10      0    1      2      4     5
      int          12     11     11    0     1      5      4
      long         12    11     11    10     0     6      5
      float         15    14     13    12    11     0      1
      double       16     15    14    13    12     10      0
    
×¢£º¿ªÏú >=10 Ò×ÒýÆðÊý¾Ý¶ªÊ§¡£

Ò»¾­È϶¨Ä³Ò»Æ¥Åä·½·¨ÊÇÄÄÖÖת»»¿ªÏú£¬±àÒëÆ÷ÔòÑ¡ÓÃת»»¿ªÏú×î
СµÄÆ¥Åä¡£Èç¹ûÓжàÓÚÒ»¸ö·½·¨£¬Æä×îС¿ªÏúÏàͬ£¬ÔòÆ¥ÅäÓжþÒåÐÔ£¬
Òª³ö±àÒëʱµÄ´íÎó¡£
    ÀýÈ磺
    class  A{
         int  method (Object o, Thread t);
         int  method(Thread t,Object o);
         void  g(Object o,Thread t){
                  method(o,t);             //µ÷ÓõÚÒ»¸ö·½·¨  
                  method(t,o);             //µ÷Óõڶþ¸ö·½·¨
                  method(t,t);             //ÓжþÒåÐÔ£¬±àÒë³ö´í
         £ý
    £ý

4.5  ¹¹Ô캯Êý
¹¹Ô캯Êý(constructor)ÊÇÌṩ³õʼ»¯µÄרÓ÷½·¨¡£ËüºÍÀàµÄÃû×ÖÏàͬ£¬
µ«Ã»ÓÐÈκηµ»ØÀàÐÍ¡£¹¹Ô캯ÊýÔÚ¶ÔÏó´´½¨Ê±±»×Ô¶¯µØµ÷Óã¬Ëü²»Äܱ»
¶ÔÏóÏÔʽµ÷Óá£Èç¹ûÄãÏëÔÚ°ü(package)Ö®Íâµ÷Óù¹Ô캯Êý£¬¾Í½«¹¹Ô캯
ÊýÉèΪ¡°public¡±(²Î¼û¡°·ÃÎÊÖ¸Ã÷·û¡°Ò»½Ú)¡£
¹¹Ô캯ÊýÒ²¿ÉÒÔÓò»Í¬¸öÊýºÍÀàÐ͵IJÎÊýÖØÔØ£¬¾ÍÏóÆäËüµÄ·½·¨±»
ÖØÔØÒ»Ñù¡£
    class Foo  {
        int    x;
        float  y;
        Foo() {
           x=0; 
           y=0.0;
        }
        Foo (int a ) {
           x=a;
           y=0.0;
        }
        Foo (float a ) {
            x=0;
            y=a; 
        }
       Foo (int a£¬float b ) {
           x=a;
           y=b;
       } 
       static void myFoo( ) {
            Foo obj1=new Foo( );          //µ÷ÓÃFoo( );
            Foo obj2=new Foo(4 );         //µ÷ÓÃFoo( int a );
            Foo obj3=new Foo(4.0 );        //µ÷ÓÃFoo( float a );
            Foo obj4=new Foo(4,4.0 );      //µ÷ÓÃFoo(int a £¬ float b );
       }
    }
³¬ÀàµÄʵÀý±äÁ¿Óɵ÷Óó¬ÀàµÄ»òµ±Ç°ÀàµÄ¹¹Ô캯Êý³õʼ»¯¡£Èç¹ûÔÚ
´úÂëÖÐûÓÐÖ¸¶¨ÓÉË­³õʼ»¯£¬Ôòµ÷ÓõÄÊdz¬ÀàÖеÄÎÞ²ÎÊýµÄ¹¹Ô캯Êý¡£
Èç¹ûÒ»¸ö¹¹Ô캯Êýµ÷ÓÃÁËÕâ¸öÀà»òÆäÖ±½Ó³¬ÀàµÄÁíÒ»¸ö¹¹Ô캯Êý£¬Õâ¸ö
µ÷ÓñØÐëÊǹ¹Ô캯ÊýÌåµÄµÚÒ»ÌõÓï¾ä£¬ÔÚµ÷Óù¹Ô캯Êý֮ǰʵÀý±äÁ¿²»
ÒýÓá£

    µ÷ÓÃÖ±½Ó³¬ÀàµÄ¹¹Ô캯ÊýÈçÏ£º
    class  MyClass extends OtherClass  {
          MyClass (someParamenters ) {
               /* µ÷Óø¸À๹Ô캯Êý */
              super(otherParameters);
          }  ¡­
    }¡­
    µ÷Óõ±Ç°ÀàµÄ¹¹Ô캯ÊýÈçÏÂʾ£º
    class MyClass extends OtherClass  {
        MyClass (someParameters) {
                 ¡­
        } 
        MyClass(otherParameters) {
             /*µ÷Óõ±Ç°ÀàµÄ¹¹Ô캯Êý£¬¸Ãº¯ÊýÓÐÖ¸¶¨µÄ²ÎÊý±í*/
             this (someParameters);
             ¡­
       }
       ¡­
     }
    ÏÂÃæµÄFooºÍFooSubÀàµÄ·½·¨ÖÐʹÓù¹Ô캯ÊýµÄÀý×Ó£º
     class Foo extends Bar {
          int a;
          Foo(int a) {
              //Òþº¬µ÷ÓÃBar( )
              this.a=a;
          }
          Foo( ) {
              this (42);  //µ÷ÓÃFoo(42)£¬´úÌæBar( )
          }
      }
      class FooSub extends Foo {
           int b;
           FooSub (int b) {
              super(13);          //µ÷ÓÃFoo(13); È¥µô´ËÐн«µ÷ÓÃFoo( )
              this.b=b;
           }  
       }

4.6 ÓÃnewÔËËã·û´´½¨¶ÔÏó
ÀàÊÇÓÃÀ´¶¨Òå¶ÔÏóµÄ״̬ºÍÐÐΪµÄÄ£°å£¬¶ÔÏóÊÇÀàµÄʵÀý¡£ÀàµÄËù
ÓÐʵÀý¶¼·ÖÅäÔÚ¿É×÷ÎÞÓõ¥Ôª»ØÊյĶÑÖС£ÉùÃ÷Ò»¸ö¶ÔÏóÒýÓò¢²»»áΪ
¸Ã¶ÔÏó·ÖÅä´æ´¢£¬³ÌÐòÔ±±ØÐëÏÔʽµØÎª¶ÔÏó·ÖÅä´æ´¢£¬µ«²»±ØÏÔʽɾ³ý
´æ´¢£¬ÎÞÓõ¥Ôª»ØÊÕÆ÷»á×Ô¶¯»ØÊÕÎÞÓõÄÄÚ´æ¡£
·ÖÅä¶ÔÏó´æ´¢ÓÃnewÔËËã·û¡£³ýÁË·ÖÅä´æ´¢Ö®Í⣬new»¹³õʼ»¯Êµ
Àý±äÁ¿£¬µ÷ÓÃʵÀýµÄ¹¹Ô캯Êý¡£¹¹Ô캯ÊýÊdzõʼ»¯¶ÔÏóµÄÒ»ÖÖ·½·¨(¼û¡°¹¹
Ô캯Êý¡±)£¬ÏÂÃæµÄÀý×ÓÊÇ·ÖÅä²¢³õʼ»¯ClassAµÄÒ»¸öʵÀý£º
    a = new ClassA( );
    ÒÔϹ¹Ô캯ÊýÊÇ´øÓвÎÊýµÄÀý×Ó£º
    b = new ClassA(3,2);
·ÖÅäµÄµÚÈýÖÖÐÎʽÔÊÐíÒÔ´®±í´ïʽÐÎʽÌṩÀàÃû×Ö£¬×Ö·û´®ÔÚÔËÐÐ
ʱ¿ÌÇóÖµ£¬new·µ»ØÒ»¸öObjectÀàÐ͵ĶÔÏó£¬ÔÙת»»³ÉËùÏ£ÍûµÄÀàÐÍ¡£
    b = new ("class"+"A");
    ÕâÖÖÇé¿öÏ£¬µ÷Óù¹Ô캯ÊýʱÎÞÐè²ÎÊý¡£

4.6.1 ÎÞÓõ¥ÔªÊÕ¼¯
ÎÞÓõ¥ÔªÊÕ¼¯Æ÷(Garbage Collector)ʹ´æ´¢¹ÜÀíµÄÐí¶à·½Ãæ±äµÃ¼ò
µ¥¡¢°²È«¡£³ÌÐò²»ÐèÒªÏÔʽÊÍ·ÅÄڴ棬ËüÊÇ×Ô¶¯´¦ÀíµÄ¡£ÎÞÓõ¥ÔªÊÕ¼¯
Æ÷²»»áÊÍ·ÅÕýÔÚ±»ÒýÓõÄÄڴ棬ֻÊÍ·ÅÄÇЩ²»ÔÙ±»ÒýÓõĿռ䡣Õâ¾Í·À
Ö¹ÁËÐü¹ÒÖ¸ÕëºÍ´æ´¢Â©¶´(leak)¡£ËüҲʹÉè¼ÆÈËÔ±´ÓϵͳµÄ´æ´¢¹ÜÀíÖнâ
ÍѳöÀ´¡£

4.6.2ÖÕÖ¹
JavaµÄ¹¹Ô캯ÊýÍê³ÉÒ»¸ö¶ÔÏó³õʼ»¯¹¤×÷£¬JavaµÄÖÕÖ¹
(finalization)·½·¨ÔòÍê³ÉºÍÎö¹¹º¯ÊýÀàËÆµÄ¹¦ÄÜ£¬µ«ÓëC++²»Í¬Ö®´¦£¬ÊÇ
Ëü¿ÉÏÔʽµ÷Óá£ËäÈ»JavaµÄÎÞÓõ¥ÔªµÄ»ØÊÕ¹¦ÄÜ¿ÉÒÔ×Ô¶¯µØÊͷŶÔÏóËù
Õ¼ÓеÄ×ÊÔ´£¬µ«ÊǶÔÏóÕ¼ÓеÄijЩ×ÊÔ´£¬ÀýÈ磺 ÎļþÃèÊö·û¡¢Ì×½Ó×Ö
(socket)£¬ÎÞÓõ¥Ôª»ØÊÕÊÇÎÞ·¨´¦ÀíµÄ¡£ËùÒÔ³ÌÐòÔ±±ØÐëÓÃÖÕÖ¹º¯ÊýÀ´´¦
Àí¡£ÖîÈ磺¹Ø±Õ´ò¿ªµÄÎļþ£¬ÖÕÖ¹ÍøÂçÁ¬½ÓµÈ³ÌÐòÉÆºó¹¤×÷¡£
ÏÂÃæµÄÀý×ÓÊÇÈ¡×ÔJava FileOutpntStreamÀàÖеÄÖÕÖ¹º¯Êý¡£Õâ¸öÖÕÖ¹
º¯ÊýÊÇÒ»¸öʵÀýµÄ·½·¨£¬Ã»ÓвÎÊý£¬Ò²ÎÞ·µ»ØÖµ£¬Ãû×Ö±ØÐëÈ¡finalize()¡£
ÕâÀïÎÒÃÇӦעÒâËüºÍC++Îö¹¹º¯ÊýµÄÇø±ð£º
/**
* closes the stream when garbage is collected
* checks the file descriptor first to make sure it 
* is not already closed.
*/
protected void finalize( ) throws IOException {
    if (fd!=null) close();
}
    ÏÂÃæÊǹØÓÚÖÕÖ¹º¯ÊýµÄ¼¸µã×¢ÒâÊÂÏ
* Èç¹ûÒ»¸ö¶ÔÏóº¬ÓÐÖÕÖ¹º¯Êý£¬ÄÇôÕâ¸ö·½·¨£¬ÔÚϵͳÊÕ¼¯¸Ã¶ÔÏóËùÕ¼
ÄÚ´æÖ®Ç°±»µ÷Óá£
* Java½âÊÍÆ÷¿ÉÄÜÔÚûÓÐÍê³ÉÎÞÓõ¥ÔªÊÕ¼¯µÄÇé¿öÏÂÍ˳ö£¬ÄÇôijЩÖÕ
Ö¹º¯Êý²»¿ÉÄܱ»µ÷Óá£ÔÚÕâÖÖÇé¿öÏ£¬Î´ÊͷŵÄ×ÊԴͨ³£ÓɲÙ×÷ϵͳÀ´
´¦Àí¡£
* JavaµÄÎÞÓõ¥ÔªµÄÊÕ¼¯·¢ÉúµÄʱ¿ÌÊDz»È·¶¨µÄ£¬Òò´Ë£¬JavaÎÞ·¨±£Ö¤
ÔÚºÎʱµ÷ÓÃÖÕÖ¹º¯Êý¡¢ÖÕÖ¹º¯ÊýµÄµ÷ÓôÎÐò¡¢ÒÔ¼°ÓÉÄÄÒ»¸öÏß³ÌÖ´ÐÐÖÕ
Ö¹º¯Êý¡£
* ÔÚÖÕÖ¹º¯Êý±»µ÷ÓÃʱ£¬¶ÔÏó»á²»Á¢¿Ì±»»ØÊÕ¡£ÒòΪÖÕÖ¹º¯ÊýҪʹÓöÔ
ÏóµÄthisÖ¸Õë×öijЩ´¦Àí£¬Òâζ×ŶÔÏóÓÖ±»ÒýÓÃÁË¡£Ö»ÓÐÔÚfinalize()Ö´
ÐÐÖ®ºó£¬ÎÞÓõ¥ÔªÊÕ¼¯³ÌÐò²ÅÓпÉÄÜ´¦Àí¸Ã¶ÔÏó¡£
* ÉÏÃæÀý×ÓÖУ¬ÖÕÖ¹º¯Êý¿ÉÒÔÒý·¢Ò»¸öÒì³£¡£µ«ÊÇÈç¹ûÔÚÖÕÖ¹º¯ÊýÖз¢
ÉúÁËÆäËüÒì³££¬½«±»ÏµÍ³ºö¡£

4.6.3   nullÒýÓÃ
¹Ø¼ü×ÖnullÊÇÒ»¸öÔ¤¶¨ÒåµÄ³£Á¿£¬±íʾ¡°ÎÞʵÀý¡±¡£null¿ÉÒÔÓÃÔÚ
ʵÀýÄܹ»³öÏÖµÄÈκεط½£¬¿ÉÒÔ±»×ª»»³ÉÈκÎÀàÀàÐÍ¡£

4.7 ¾²Ì¬·½·¨£¬±äÁ¿ºÍ³õʼ»¯
±äÁ¿ºÍ·½·¨¶¼¿ÉÒÔÉùÃ÷Ϊ¾²Ì¬£¨static£©µÄ£¬ÕâÑùËüÃÇÖ»ÄÜÓÃÓÚÀà±¾
Éí£¬¶ø²»ÊÇÀàµÄʵÀý¡£´ËÍ⣬ÀඨÒåÖеÄÒ»¿é´úÂëÒ²¿ÉÒÔÉùÃ÷Ϊ¾²Ì¬µÄ¡£
ÕâÑùµÄ³ÌÐò¿é½Ð×ö¾²Ì¬³õʼ»¯¶Î¡£
¾²Ì¬±äÁ¿¿ÉÒÔÓгõÖµ£¬¾ÍÏóʵÀý±äÁ¿Ò»Ñù£¬£¨²Î¼ûµÄ¡°³õʼ»¯Ë³Ðò¡±£©¡£
¾²Ì¬±äÁ¿Ö»ÔÚÀàÖгöÏÖÒ»´Î£¬¶ø²»ÂÛÕâ¸öÀàÓжàÉÙ¸öʵÀý¡£¾²Ì¬±äÁ¿ºÍ
·½·¨¶¼ÊÇͨ¹ýÀàÃû×ÖÀ´·ÃÎʵġ£Îª·½±ãÆð¼û£¬Ò²¿ÉÒÔÓÃÀàʵÀýÀ´·ÃÎÊ¡£
    class Ahem {
        int i;        //ʵÀý±äÁ¿
        static int j;   //¾²Ì¬±äÁ¿
        static int arr[ ] = new  int[12];
        static {              //¾²Ì¬³õʼ³ÉÔ±£¬³õʼ»¯Êý×é
             for (int i =0; i ¡´arr. length; i++) {
                arr[i] =i;
             }
       }
       void seti(int i) {                       //ʵÀý·½·¨
           this.i =i;
       }
       static void setj (int j) {                  //¾²Ì¬·½·¨
            Ahem.j=j;
       }
      static void clearThroat( ) {
         Ahem a = new Ahem ();
         Ahem.j=2;                //ÓÐЧ£º ͨ¹ýÀà·ÃÎʾ²Ì¬±äÁ¿
         a.j =3;                  //ÓÐЧ£º ͨ¹ýʵÀý·ÃÎʾ²Ì¬±äÁ¿
         Ahem.setj(2);             //ÓÐЧ£º ͨ¹ýÀà·ÃÎʾ²Ì¬·½·¨
         a.setj(3);                //ÓÐЧ£º ͨ¹ýʵÀý·ÃÎʾ²Ì¬·½·¨
         a.i=4;                  //ÓÐЧ£º ͨ¹ýʵÀý·ÃÎÊʵÀý±äÁ¿
         Ahem.i=5;               //´íÎó£º Í¨¹ýÀà·ÃÎÊʵÀý±äÁ¿
         a.seti(a);                //ÓÐЧ£º ͨ¹ýʵÀý·ÃÎÊʵÀý·½·¨
         Ahem.seti(5);            //´íÎó£º Í¨¹ýÀà·ÃÎÊʵÀý·½·¨
       }
     }

7.1 ÉùÃ÷µÄ˳Ðò
ÀàºÍËüµÄ·½·¨ÒÔ¼°ÊµÀý±äÁ¿ÉùÃ÷µÄ´ÎÐò²¢²»ÖØÒª£¬µ«Êdzõʼ»¯Ê±Ñ­
»·ÒÀÀµÊÇ´æÔڵġ£Óйسõʼ»¯Ê±Ñ­»·ÒÀÀµµÄÐÅÏ¢²Î¼û¡°³õʼ»¯Ë³Ðò¡±Ò»
½Ú¡£·½·¨¿ÉÒÔ×ÔÓÉÏòǰÒýÓÃÆäËüµÄ·½·¨ºÍʵÀý±äÁ¿¡£ÒÔÏÂÀý×ÓÊǺϷ¨µÄ£º
    class A  {
         void  a () {
               f.set(42);
         }
         B  f;
    }
    class B {
         void set (long n) {
             this .n=n; 
         }
         long n;
    }

4.7.2 ³õʼ»¯Ë³Ðò
¼ÓÔØÒ»¸öÀàʱ£¬ËüµÄ¾²Ì¬³õʼ»¯´úÂë±»Ö´ÐС£¾²Ì¬³õʼ»¯´úÂë¶ÎÓë
¾²Ì¬±äÁ¿³õʼ»¯Í¬Ê±½øÐÐ ¡£ËüÃǰ´´Ê·¨Ë³ÐòÖ´ÐС£ÀýÈ磬һ¸öÀàCÉù
Ã÷ÈçÏ£º
    class C {
         static int a=1;
         static {
             a++;
             b=7;
         }
         static int b=2;
    }
    µ±C±»¼ÓÔØÊ±£¬°´ÒÔÏÂ˳ÐòÖ´ÐУº
    * aÖÃΪ1¡£
    * ¾²Ì¬³õʼ»¯¶ÎÖ´ÐУ¬aÖÃΪ2£¬bÖÃΪ7¡£
    * bÖÃΪ2¡£
Èç¹û¾²Ì¬³õʼ»¯´úÂëÒýÓÃÁËÆäËüµÄδ¼ÓÔØµÄÀ࣬Õâ¸öÀཫ±»¼ÓÔØ£¬
ËüµÄ¾²Ì¬³õʼ»¯´úÂ뽫ÏÈÖ´ÐС£ÔÚ¾²Ì¬³õʼ»¯ÆÚ¼äÒýÓÃδ¼ÓÔØµÄÀ࣬¸Ã
ÀàÏȼÓÔØ²¢³õʼ»¯¡£ÔÚ³õʼ»¯ÐòÁÐÖУ¬ÈôÒýÓõ½ÔÚËü֮ǰµÄÒ»¸öδ³õʼ
»¯µÄÀàʱ£¬¾Í»á·¢ÉúÑ­»·¡£Õ⽫µ¼ÖÂÒ»¸öNoClassDefFoundException´í
Îó¡£
ÀýÈ磬µ±ÀàA¼ÓÔØÊ±£¬ËüµÄ¾²Ì¬³õʼ»¯´úÂë±»Ö´ÐС£µ«AµÄ¾²Ì¬³õ
ʼ»¯´úÂëÒýÓÃÁËÁíÒ»¸öδ¼ÓÔØµÄÀàB¡£ÕâÑùB½«±»¼ÓÔØ£¬ËüµÄ¾²Ì¬³õʼ
»¯´úÂëÒªÔÚA֮ǰִÐС£AµÄ¾²Ì¬³õʼ»¯£¬ËæºóÖ´ÐС£µ«Èç¹ûBÖеľ²
̬³õʼ»¯´úÂëÒýÓÃA£¬¾Íµ¼ÖÂÁËÑ­»·ÒýÓá£
ÈôʵÀý»ò¾²Ì¬±äÁ¿³õʼ»¯Ê±£¬´æÔÚǰÏòÒÀÀµ£¬Ôò³ö±àÒëʱ¿Ì´íÎó¡£
ÀýÈ磺
    int i = j+2;
    int j = 4;
    ½«²úÉú±àÒëʱ¿Ì´íÎó¡£
    ʵÀý±äÁ¿³õʼ»¯Ê±¿ÉÒÔÓжԾ²Ì¬±äÁ¿µÄǰÏòÒÀÀµ¡£ÀýÈçÒÔÏ´úÂë¶Î£º
    int i = j+2;                 //ʵÀý±äÁ¿
    static int j = 4;              //¾²Ì¬±äÁ¿
iǰÏòÒÀÀµÓÚj£¬i½«±»³õʼ»¯Îª6£¬jΪ4¡£ÒòΪjÊǾ²Ì¬±äÁ¿£¬Ëü
µÄ³õʼ»¯ÏÈÓÚʵÀý±äÁ¿¡£
    ¾²Ì¬µÄ·½·¨²»ÄÜÒýÓÃʵÀý±äÁ¿; Ö»ÄÜÒýÓþ²Ì¬±äÁ¿ºÍ·½·¨¡£

4.8 ·ÃÎÊÖ¸¶¨·û
·ÃÎÊÖ¸¶¨·û(access specifier)¾ÍÊdzÌÐòÔ±¿ØÖƶԷ½·¨ºÍ±äÁ¿·ÃÎʵÄÐÞ
Êηû¡£ÓÃÓÚ¿ØÖÆ·ÃÎʵĹؼü×ÖÊÇpublic£¬private£¬ºÍprotected¡£public
·½·¨¿ÉÒÔ±»ÈκÎÈË·ÃÎÊ¡£private·½·¨Ö»ÄÜÔÚÀඨÒåʱÔÚÀàµÄÄÚ²¿·ÃÎÊ¡£
ÒòΪprivate·½·¨ÔÚÀàÖ®ÍâÊDz»¿É¼ûµÄ£¬ËüÃÇÊÇfinal£¨¶¨Ö¹£©µÄ£¬²¢ÇÒ²»
Äܱ»¸²¸Ç(²Î¼ûµÚ2.4.10.3½Ú¡°¶¨Ö¹À࣬·½·¨£¬±äÁ¿¡±)¡£´ËÍâ²»Äܽ«Ò»¸ö
·Ç˽Óз½·¢¸²¸Ç³É˽Óз½·¨£¬protected·ÃÎÊÖ¸¶¨·ûʹ·½·¨ºÍ±äÁ¿Ö»ÐíÆä
×ÓÀà·ÃÎÊ£¬ÆäËüÀà¶¼²»ÐС£
public¿ÉÓÃÓÚÀ࣬·½·¨ºÍ±äÁ¿¡£±êÒÔpublic µÄÀà¡¢·½·¨ºÍ±äÁ¿£¬¿É
ΪÈκεط½µÄÈÎºÎÆäËûÀà¡¢·½·¨·ÃÎÊ¡£¸²¸Ç²»Äܸıäpublic·ÃÎÊȨÏÞ¡£
ûÓб»Ö¸¶¨public»òprivateµÄÀ࣬·½·¨ºÍ±äÁ¿£¬Ö»ÄÜÔÚÉùÃ÷ËüÃǵÄ
°ü(package)ÖзÃÎÊ(²Î¼ûµÚ2.6½Ú ¡°°ü¡±)¡£

4.9 ±äÁ¿×÷ÓÃÓò¹æÔò
ÔÚÒ»¸ö°üÄÚ£¬µ±Ò»¸öÀà±»¶¨Òå³ÉÁíÒ»¸öÀàµÄ×ÓÀàʱ£¬³¬ÀàÖÐËù×÷µÄ
ÉùÃ÷¶Ô×ÓÀà¾ù¿É¼û¡£µ±·½·¨¶¨ÒåÖÐÒýÓñäÁ¿Ê±£¬½«Óõ½ÏÂÃæµÄ×÷ÓÃÓò¹æ
Ôò£º
    1. Ê×ÏÈËÑË÷µ±Ç°¿é£¬È»ºóÊÇËùÓÐÍâÌ׵Ŀ飬ֱµ½°üÈݸÿéµÄµ±Ç°·½
·¨£¬Õâ±»ÈÏΪÊǾֲ¿×÷ÓÃÓò¡£ÔÚ¾Ö²¿×÷ÓÃÓòºó£¬»¹¼ÌÐøÔÚÀàµÄ×÷ÓÃÓòÖÐ
ËÑË÷¡£
    2. ËÑË÷µ±Ç°ÀàÖеıäÁ¿¡£
    3. Èç¹ûûÓÐÕÒµ½±äÁ¿£¬ÔòËÑË÷ËùÓеij¬ÀàÖеıäÁ¿£¬Ê×ÏÈ´ÓÖ±½Ó³¬
À࿪ʼ£¬Ö±µ½ObjectÀà¡£Èç¹ûûÓÐÕÒµ½±äÁ¿£¬ËÑË÷ÒýÈëµÄÀàºÍ°üÃû¡£Èç
¹û»¹Ã»ÓÐÕÒµ½£¬¾Í³ÉΪ±àÒëʱ¿Ì´íÎó¡£
    ÔÚÒ»¸öÀàÖжà¸ö±äÁ¿³öÏÖÏàͬµÄÃû×Ö£¬Ò²ÊDZàÒë´íÎó¡£

4.10  ÐÞÊηû
JavaÓÐÒÔϹؼü×ÖÓÃ×÷ÐÞÊηû(Modifier)¡£

4.10.1 Ḭ̈߳²È«±äÁ¿
±ê¼ÇÁËThreadsafe£¨Ḭ̈߳²È«£©µÄʵÀý»ò¾²Ì¬±äÁ¿ÊÇÖ¸µ±Ò»¸öÏß³Ì
ʹÓÃËüʱ²»Äܱ»ÆäËüÏ̸߳ü¸Ä£¬¼´±äÁ¿²»Äܱ»Òì²½¸Ä±ä¡£½«±äÁ¿±ê¼ÇΪ
ThreadsafeµÄÄ¿µÄÊÇÔÊÐí±àÒëÆ÷½øÐÐÓÅ»¯£¬À´ÆÁ±ÎÒì²½¸ü¸ÄµÄ·¢Éú¡£Ê¹ÓÃ
ThreadsafeµÄÓÅ»¯´ëÊ©Êǽ«¼Ä´æÆ÷ÖеÄʵÀý±äÁ¿·ÅÈë¸ßËÙ»º´æ¡£

4.10.2˲̬±äÁ¿
transient£¨Ë²Ì¬£©±êÖ¾±»½âÊÍÆ÷ÓÃÓÚ³Ö¾ÃÐÔ¶ÔÏó¡£µ±Ò»¸öÀàµÄʵÀýÒÔ
³Ö¾Ã¶ÔÏóд³öʱ£¬Èô±äÁ¿±ê¼ÇΪtransient£¬Ôò×÷ÌØÊâ´¦Àí¡£

4.10.3 ¶¨Ö¹À࣬·½·¨ºÍ±äÁ¿
final£¨¶¨Ö¹£©¹Ø¼ü×ÖÊÇÒ»¸öÐÞÊηû£¬±ê¼ÇÒ»¸öÀ಻ÄÜÓÐ×ÓÀ࣬һ¸ö
·½·¨²»Äܱ»¸²¸Ç£¬»òÕßÒ»¸ö±äÁ¿ÎªÒ»¸ö³£Öµ¡£Óɶ¨Ö¹ÀàÅÉÉú×ÓÀ࣬¸²¸Ç
¶¨Ö¹·½·¨£¬¸ü¸Ä¶¨Ö¹±äÁ¿µÄÖµ£¬¶¼½«²úÉú±àÒë´íÎó¡£final±äÁ¿µÄ×÷ÓÃÓë
×ÖÃæÁ¿Ïàͬ¡£
ʹÓÃfinalʹ±àÒëÆ÷Äܹ»×÷ºÜ¶àÓÅ»¯¡£ÆäÖеÄÒ»¸öÓÅ»¯ÊÇ·½·¨ÌåµÄÄÚ
ÁªÀ©Õ¹(inline expansion)£¬Õâ¸ö·½·¨Ì屨ÐëÊÇСµÄfinalº¯Êý¡£Ð¡µ½Ê²Ã´³Ì
¶ÈÒÀÀµÓÚ±àÒëÆ÷µÄʵÏÖ¡£
    finalÉùÃ÷µÄÀý×ÓÈçÏ£º
    class Foo {
        final int value =3;                  //¶¨Ö¹±äÁ¿
        final int foo (int a£¬int b) {         //¶¨Ö¹·½·¨
        }
    }

4.10.4 ±¾µØ·½·¨
±êÓÐnative£¨±¾µØ£©µÄ·½·¨ÊÇÓÉÆ½Ì¨Ïà¹ØµÄÓïÑÔ(ÈçCÓïÑÔ)ʵÏֵģ¬
²»ÊÇJavaµÄ±¾Éí·½·¨£¬Ã»Óз½·¨Ì壬ÉùÃ÷ÒԷֺŽáÊø¡£¹¹Ô캯Êý²»ÄÜΪ
native¡£ËäÈ»±¾µØ·½·¨ÊÇÓÉÆ½Ì¨Ïà¹ØµÄÓïÑÔʵÏֵ쬵«ËüÃǵÄʹÓÃÓë²»ÊÇ
nativeµÄ·½·¨Ò»Ñù£¬ÀýÈ磺¿ÉÒÔ¸²¸Ç¡£±¾µØ·½·¨ÉùÃ÷µÄÀý×ÓÈçÏ£º
    native long timeofDay();

4.10.5 ³éÏó·½·¨
³éÏó·½·¨(abstract method)Ϊ³¬Àà»ò½çÃæÌṩÁËÒ»ÖÖÊֶΣ¬Ëüʵ¼ÊÉÏ
ÊDZØÐëÓÉ×ÓÀàʵÏÖµÄÒ»×éЭÒé¡£±ê¼ÇΪabstractµÄ·½·¨±ØÐëÔÚÆä×ÓÀàÖж¨
Òå¡£³éÏó·½·¨Ã»Óз½·¨Ì壬 ¶øÉùÃ÷ÓɷֺŽáÊø¡£
    ʹÓÃabstract¹Ø¼ü×ֵĹæÔòÈçÏ£º
    * ¹¹Ô캯Êý£¬²»ÄÜΪabstract¡£
    * ¾²Ì¬·½·¨²»ÄÜΪabstract¡£
    * private ·½·¨²»ÄÜΪabstract¡£
    * abstract·½·¨±ØÐëÔÚÉùÃ÷ËüµÄÀàµÄ×ÓÀàÖж¨Òå¡£
    * ²»Äܸ²¸Ç³¬ÀàÖеÄabstract·½·¨¡£
    * °üº¬abstract·½·¨µÄÀàºÍ¼Ì³Ðabstract·½·¨µÄÀà±»ÈÏΪÊdzéÏóÀà¡£
    * ³õʼ»¯³éÏóÀà»òÖ±½Óµ÷ÓÃabstract·½·¨£¬½«µ¼Ö±àÒëʱ¿Ì´íÎó¡£

4.10.6 ·½·¨ºÍ¿éµÄͬ²½
synchronized£¨Í¬²½£©¹Ø¼ü×ÖÊÇÒ»¸öÐÞÊηû£¬±ê¼ÇÒ»¸ö·½·¨»ò´úÂë¿é
ÐèҪȡµÃËø(lock)¡£ÎªÁ˱£Ö¤µ±Ò»´úÂë·ÃÎÊijһ×ÊԴʱ£¬ÁíÒ»ÒªÇó·ÃÎʸÃ
×ÊÔ´µÄ´úÂ뽫²»ÄÜÖ´ÐУ¬ËøÊDZØÒªµÄ¡£Ã¿¸ö¶ÔÏó¶¼ÓÐÒ»¸öËøÓëÖ®ÁªÏµ£¬ ÿ
¸öÀàҲͬÑùÓÐÒ»¸öËø¡£Í¬²½·½·¨ÊÇ¿ÉÔÙÈëµÄ¡£
ÿµ±µ÷ÓÃÒ»¸ö±»Í¬²½µÄ·½·¨Ê±£¬Ëü½«µÈ´ýÖ±µ½ËüµÃµ½µ±Ç°ÊµÀý£¨Èç
¹ûÊǾ²Ì¬·½·¨ÔòΪÀࣩµÄËø£¬È»ºóÖ´ÐдúÂ룬ÊÍ·ÅËø¡£
ͬ²½¿éµÄÐÐΪÓëͬ²½·½·¨ÏàËÆ¡£Çø±ðÔÚÓÚËüËùÓõÄËøÊÇ¿éÄÚÓÉ
synchronized¹Ø¼ü×ÖËùÔÚÓï¾äÖ¸¶¨µÄ¶ÔÏó»òÀàµÄËø£¬¶ø²»Êǵ±Ç°ÀàµÄËø¡£
    ͬ²½¿éµÄÉùÃ÷ÈçÏ£º
    /* ±¾·½·¨Ç°ÎÄ´úÂë*/
    synchronized ()  {//  ͬ²½Ä£¿é
         /*  ͬ²½·ÃÎÊ´úÂë  */
    }
    /*±¾·½·¨ÆäÓà´úÂë*/
    ÉùÃ÷ͬ²½·½·¨µÄÀý×ÓÈçÏ£º
    class Point {
        float x£¬y;
        synchronized void scale (float f ) {
            x*=f;
            y*=f;
        }
    }
    ͬ²½Ä£¿éµÄÀý×ÓÈçÏ£º
    class Rectangle {
         Point topLeft;
         ¡­
         void print ( ) {
              synchronied    (topLeft)  {
                  println (¡°topLeft.x=¡±+ topLeft.x);
                  println (¡°topLeft.y=¡±+ topLeft.y);
              }
              ¡­
         }
    }

5. ½çÃæ
½çÃæ(interface)¶¨ÒåÁËÒ»×é·½·¨£¬¶øÃ»ÓÐʵÏÖÆäÌå¡£½çÃæÖ»Ìṩ·½·¨
ЭÒéµÄ·â×°£¬¶ø²»ÏÞÖÆÊµÏÖ±ØÐëÔÚʲô¼Ì³ÐÊ÷ÉÏ¡£µ±Ò»¸öÀàʵÏÖ½çÃæÊ±£¬
Ò»°ã±ØÐëʵÏÖ½çÃæÃèÊöµÄËùÓз½·¨µÄÌå¡£(Èç¹ûʵÏÖ½çÃæµÄÀàÊdzéÏóÀ࣬
Ëü¿ÉÒÔ°ÑʵÏÖ½çÃæ·½·¨µÄÈÎÎñ½»¸øËüµÄ×ÓÀà¡£)
½çÃæ½â¾öÁËÒò¶à¼Ì³ÐÔËÐÐʱ¹ý´ó¿ªÏúÕâÀàÎÊÌâ¡£ µ«ÓÉÓÚ½çÃæ²ÉÓö¯
̬·½·¨Êø¶¨£¬Ê¹ÓÃËüÃǵÄʱºòÔÚÐÔÄÜÉÏ»áÊܵ½Ò»µãÓ°Ïì¡£
½çÃæÔÊÐí¼¸¸öÀàͬʱÏíÓÐÒ»¸ö³ÌÐòÉè¼Æ½çÃæ£¬¶ø±Ë´Ë²»Íêȫ֪µÀ¶Ô
·½¾ßÌåµÄʵÏÖ¡£ÏÂÃæµÄÀý×ÓÊÇÒ»¸ö½çÃæµÄÉùÃ÷£¨¼´ÓÃÁËinterface ¹Ø¼ü×Ö£©£¬
²¢ÓÉÒ»¸öÀàʵÏÖ¡£
    public interface   Storing {
         void freezeDry (Stream s);
         void reconstitute (Stream s);
    }
    public class Image implement Storing£¬Painting {
          ¡­
          void freezeDry (Stream s) {
              //ÅÅÐòǰ°´JPEG ѹËõͼÏó
          }
          void reconstitute (Stream s ) {
              // ¶ÁÈëǰ°´JPEG ½âѹËõͼÏó
               ¡­
          }
    }
ÏóÀàÒ»Ñù£¬½çÃæÒ²·Ö˽ÓУ¨È±Ê¡£©ºÍ¹«ÓС£×÷ÓÃÓòÓëÀàÏàͬ¡£½çÃæ
Äڵķ½·¨Í¨³£ÊÇpublic£¬±äÁ¿ÊÇpublic£¬static ºÍfinalµÄ¡£

5.1½çÃæ×÷ΪÀàÐÍ
°´ÉùÃ÷µÄÓï·¨£¬½çÃæÃû£¨interfaceName£©ºÍ±äÁ¿Ãû£¨ variableName£©
ÉùÃ÷µÄÊÇʵÏָýçÃæÃûµÄij¸öÀàµÄʵÀý±äÁ¿»ò²ÎÊý¡£µ±½çÃæ×÷ΪÀàÐÍʱ£¬
ÆäÐÐΪºÍÀà×÷ΪÀàÐÍÍêȫһÑù¡£Ëüʹ³ÌÐòÔ±¿ÉÖ¸¶¨ÊµÏÖ¸ø¶¨½çÃæµÄ¶ÔÏó£¬
¶ø²»±ØÖªµÀ¸Ã¶ÔÏóµÄ¾ßÌåÀàÐÍ»ò¼Ì³Ð¹ØÏµ¡£Ê¹ÓýçÃæ¿ÉÒÔ²»±Ø¹ØÐĹ²Ïí
¹«¹²³éÏó³¬ÀàµÄÆäËüÀ࣬»òÈçºÎÔÚObjectÖÐÔö¼Ó·½·¨¡£
    ÏÂÃæÊÇ˵Ã÷½çÃæÃû¡¢·½·¨ÃûÓï·¨µÄÀý×Ó¡£
    class StorageManager £û
        Stream stream;
        ¡­ 
        //  Storing ÊǽçÃæÃû
        void pickle (Storing obj)  {
            obj. freezeDry (stream);
        }
    }

5.2 ½çÃæÖеķ½·¨
    ½çÃæÖеķ½·¨¶¨ÒåÈçÏ£º
    returnType   methodName (parameterList);
´ËÉùÃ÷ûÓÐÐÞÊηû(modifier)¡£½çÃæÖÐËùÓеķ½·¨¶¼Êǹ«ÓеÄ(public£©
ºÍ³éÏóµÄ£¨abstract£©¹ÊÎÞÆäËûÐÞÊηû£¬²Î¼û¡°³éÏó·½·¨¡±Ò»½Ú¡£

5.3 ½çÃæÖеıäÁ¿
½çÃæÖеıäÁ¿ÊÇfinal£¬public»òstaticµÄ£¬ÎÞÐÞÊηû£¬±äÁ¿±ØÐë³õ
ʼ»¯¡£

5.4 ×éºÏ½çÃæ
    ÀûÓÃextends¹Ø¼ü×Ö¡£¿ÉÒ԰Ѷà¸ö½çÃæ×éºÏΪһ¸ö½çÃæ£¬È磺
    interface  DoesItAll  extends String£¬Painting {
             void doessomethingElse ( );
    }

6. °ü
°ü(Package)ÓÉÒ»×éÀà(class)ºÍ½çÃæ(interface)×é³É¡£ËüÊǹÜÀí´óÐÍÃû
×ֿռ䣬±ÜÃâ³åÍ»µÄ¹¤¾ß¡£Ã¿Ò»¸öÀàºÍ½çÃæµÄÃû×Ö¶¼°üº¬ÔÚij¸ö°üÖС£
°´ÕÕÒ»°ãµÄϰ¹ß£¬ËüµÄÃû×ÖÊÇÓÉ¡°.¡±ºÅ·Ö¸ôµÄµ¥´Ê¹¹³É£¬µÚÒ»¸öµ¥´Êͨ
³£ÊÇ¿ª·¢Õâ¸ö°üµÄ×éÖ¯µÄÃû³Æ¡£

6.1 ¶¨ÒåÒ»¸ö±àÒëµ¥ÔªµÄ°ü
±àÒëµ¥ÔªµÄ°üÓÉpackageÓï¾ä¶¨Òå¡£Èç¹ûʹÓÃpackageÓï¾ä£¬±àÒëµ¥
ÔªµÄµÚÒ»ÐбØÐëÎÞ¿Õ¸ñ£¬Ò²ÎÞ×¢ÊÍ¡£Æä¸ñʽÈçÏ£º
package  packageName;
Èô±àÒëµ¥ÔªÎÞpackageÓï¾ä£¬Ôò¸Ãµ¥Ôª±»ÖÃÓÚÒ»¸öȱʡµÄÎÞÃûµÄ°ü
ÖС£

6.2 ʹÓÃÆäËü°üÖеÄÀàºÍ½çÃæ
ÔÚJavaÓïÑÔÌṩһ¸ö°ü¿ÉÒÔʹÓÃÁíÒ»¸ö°üÖÐÀàºÍ½çÃæµÄ¶¨ÒåºÍʵÏÖ
µÄ»úÖÆ¡£ÓÃimport¹Ø¼ü´ÊÀ´±êÃ÷À´×ÔÆäËü°üÖеÄÀà¡£Ò»¸ö±àÒëµ¥Ôª¿ÉÒÔ
×Ô¶¯°ÑÖ¸¶¨µÄÀàºÍ½çÃæÊäÈëµ½Ëü×Ô¼ºµÄ°üÖС£
ÔÚÒ»¸ö°üÖеĴúÂë¿ÉÒÔÓÐÁ½ÖÖ·½Ê½À´¶¨ÒåÀ´×ÔÆäËü°üÖеÄÀàºÍ½ç
Ãæ£º
    * ÔÚÿ¸öÒýÓõÄÀàºÍ½çÃæÇ°Ãæ¸ø³öËüÃÇËùÔڵİüµÄÃû×Ö;
      //ǰ׺°üÃû·¨
       acme. project. FooBar obj=new acme. project. FooBar( );
    * ʹÓÃimportÓï¾ä£¬ÒýÈëÒ»¸öÀà»òÒ»¸ö½çÃæ£¬»ò°üº¬ËüÃǵİü¡£Òý
ÈëµÄÀàºÍ½çÃæµÄÃû×ÖÔÚµ±Ç°µÄÃû×Ö¿Õ¼ä¿ÉÓá£ÒýÈëÒ»¸ö°üʱ£¬Ôò¸Ã°üËù
ÓеĹ«ÓÐÀàºÍ½çÃæ¾ù¿ÉÓá£ÆäÐÎʽÈçÏ£º
    // ´Ó acme.project ÒýÈëËùÓÐÀà
      import  acme.project.*;
    Õâ¸öÓï¾ä±íʾacme.projectÖÐËùÓеĹ«ÓÐÀà±»ÒýÈ뵱ǰ°ü¡£
    ÒÔÏÂÓï¾ä´Óacme. project°üÖнøÈëÒ»¸öÀàEmployec_List¡£
    //´Ó acme. project¶øÒýÈë Employee_List
    import  acme.project.Employee_list;
    Employee_List obj = new Employee_List( );
ÔÚʹÓÃÒ»¸öÍⲿÀà»ò½çÃæÊ±£¬±ØÐëÒªÉùÃ÷¸ÃÀà»ò½çÃæËùÔڵİü£¬·ñ
Ôò»á²úÉú±àÒë´íÎó¡£

7. ±í´ïʽ
    JavaÓïÑԵıí´ïʽºÍCÓïÑԷdz£ÀàËÆ¡£

7.1 ÔËËã·û
     ÔËËã·û(operator)ÓÅÏȼ¶´Ó¸ßµ½µ×ÅÅÁÐÈçÏ£º
.   [ ]   ()
++   --    !   ¡«  instanceof
*   /    %
+  -
<<  >>  >>>
<  >  <=   >\  
==  ! =
&
^
&&
||
? :
=  op =
,

7.1.1  ÕûÊýÉϵÄÔËËã·û
ÔÚÕûÊýÔËËãʱ£¬Èç¹û²Ù×÷ÊýÊÇlongÀàÐÍ£¬ÔòÔËËã½á¹ûÊÇlongÀàÐÍ£¬
·ñÔòΪintÀàÐÍ£¬¾ø²»»áÊÇbyte£¬short»òcharÐÍ¡£ÕâÑù£¬Èç¹û±äÁ¿i±»
ÉùÃ÷Ϊshort?


--
      
         --------------------------------
           ´óµÁÔôÕæÆæ¹Ö£¬Ö»ÍµÐÅÏ¢²»°®²Æ¡£
         --------------------------------

m;34m¡ù À´Ô´:¡¤×Ͻð·Éºè bbs.njupt.edu.cn¡¤[FROM: pc02.comp.njupt]m

--
¡ù À´Ô´:£®ÄÏ´óС°ÙºÏÐÅÏ¢½»»»Õ¾ bbs.nju.edu.cn£®[FROM: a507yjh.nju.edu]
ÿ