Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Java»ù´¡ÖªÊ¶×ܽá
 
  2815  次浏览      27
 2018-5-18 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcnblogs£¬±¾ÎÄÖ÷Òª×ܽáÁËJavaµÄËùÓеĻù´¡ÖªÊ¶£¬²Î¿¼¡¶Java±à³Ì˼Ïë¡·ÕûÀí¶ø³É£¬¶ÔJava»ù´¡½×¶ÎµÄѧϰÓкÜÖØÒªµÄ×÷Óá£

Ò»£ºjava¸ÅÊö£º

1£¬JDK£ºJava Development Kit£¬javaµÄ¿ª·¢ºÍÔËÐл·¾³£¬javaµÄ¿ª·¢¹¤¾ßºÍjre¡£

2£¬JRE£ºJava Runtime Environment£¬java³ÌÐòµÄÔËÐл·¾³£¬javaÔËÐеÄËùÐèµÄÀà¿â+JVM(javaÐéÄâ»ú)¡£

3£¬ÅäÖû·¾³±äÁ¿£ºÈÃjava jdk\binĿ¼ÏµĹ¤¾ß£¬¿ÉÒÔÔÚÈÎÒâĿ¼ÏÂÔËÐУ¬Ô­ÒòÊÇ£¬½«¸Ã¹¤¾ßËùÔÚĿ¼¸æËßÁËϵͳ£¬µ±Ê¹Óøù¤¾ßʱ£¬ÓÉϵͳ°ïÎÒÃÇÈ¥ÕÒÖ¸¶¨µÄĿ¼¡£

»·¾³±äÁ¿µÄÅäÖãº

1£©£ºÓÀ¾ÃÅäÖ÷½Ê½£ºJAVA_HOME=%°²×°Â·¾¶%\Java\jdk

path=%JAVA_HOME%\bin

2£©£ºÁÙʱÅäÖ÷½Ê½£ºset path=%path%;C:\Program Files\Java\jdk\bin

ÌØµã£ºÏµÍ³Ä¬ÈÏÏÈÈ¥µ±Ç°Â·¾¶ÏÂÕÒÒªÖ´ÐеijÌÐò£¬Èç¹ûûÓУ¬ÔÙÈ¥pathÖÐÉèÖõÄ·¾¶ÏÂÕÒ¡£

classpathµÄÅäÖÃ:

1£©£ºÓÀ¾ÃÅäÖ÷½Ê½£ºclasspath=.;c:\;e:\

2£©£ºÁÙʱÅäÖ÷½Ê½£ºset classpath=.;c:\;e:\

×¢Ò⣺ÔÚ¶¨Òåclasspath»·¾³±äÁ¿Ê±£¬ÐèҪעÒâµÄÇé¿ö

Èç¹ûûÓж¨Òå»·¾³±äÁ¿classpath£¬javaÆô¶¯jvmºó£¬»áÔÚµ±Ç°Ä¿Â¼Ï²éÕÒÒªÔËÐеÄÀàÎļþ£»

Èç¹ûÖ¸¶¨ÁËclasspath£¬ÄÇô»áÔÚÖ¸¶¨µÄĿ¼Ï²éÕÒÒªÔËÐеÄÀàÎļþ¡£

»¹»áÔÚµ±Ç°Ä¿Â¼ÕÒÂð£¿Á½ÖÖÇé¿ö£º

CLASSPATHÊÇʲô£¿ËüµÄ×÷ÓÃÊÇʲô£¿

ËüÊÇjavac±àÒëÆ÷µÄÒ»¸ö»·¾³±äÁ¿¡£ËüµÄ×÷ÓÃÓëimport¡¢package¹Ø¼ü×ÖÓйء£µ±ÄãдÏÂimprot java.util.*ʱ£¬±àÒëÆ÷Ãæ¶Ôimport¹Ø¼ü×Öʱ£¬¾ÍÖªµÀÄãÒªÒýÈëjava.utilÕâ¸öpackageÖеÄÀࣻµ«ÊDZàÒëÆ÷ÈçºÎÖªµÀÄã°ÑÕâ¸öpackage·ÅÔÚÄÄÀïÁËÄØ£¿ËùÒÔÄãÊ×ÏȵøæËß±àÒëÆ÷Õâ¸öpackageµÄËùÔÚλÖã»ÈçºÎ¸æËßËüÄØ£¿¾ÍÊÇÉèÖÃCLASSPATHÀ² :) Èç¹ûjava.utilÕâ¸öpackageÔÚc:/jdk/ Ŀ¼Ï£¬ÄãµÃ°Ñc:/jdk/Õâ¸ö·¾¶ÉèÖõ½CLASSPATHÖÐÈ¥£¡µ±±àÒëÆ÷Ãæ¶Ôimport java.util.*Õâ¸öÓï¾äʱ£¬ËüÏÈ»á²éÕÒCLASSPATHËùÖ¸¶¨µÄĿ¼£¬²¢¼ìÊÓ×ÓĿ¼java/utilÊÇ·ñ´æÔÚ£¬È»ºóÕÒ³öÃû³ÆÎǺϵÄÒѱàÒëÎļþ£¨.classÎļþ£©¡£Èç¹ûûÓÐÕÒµ½¾Í»á±¨´í£¡CLASSPATHÓеãÏñc/c++±àÒëÆ÷ÖеÄINCLUDE·¾¶µÄÉèÖÃŶ£¬ÊDz»ÊÇ£¿µ±c/c++±àÒëÆ÷Óöµ½include ÕâÑùµÄÓï¾ä£¬ËüÊÇÈçºÎÔË×÷µÄ£¿Å¶£¬ÆäʵµÀÀí¶¼²î²»¶à£¡ËÑË÷INCLUDE·¾¶£¬¼ìÊÓÎļþ£¡µ±Äã×Ô¼º¿ª·¢Ò»¸öpackageʱ£¬È»ºóÏëÒªÓÃÕâ¸öpackageÖеÄÀࣻ×ÔÈ»£¬ÄãÒ²µÃ°ÑÕâ¸öpackageËùÔÚµÄĿ¼ÉèÖõ½CLASSPATHÖÐÈ¥£¡CLASSPATHµÄÉ趨£¬¶ÔJAVAµÄ³õѧÕß¶øÑÔÊÇÒ»¼þ¼¬ÊÖµÄÊ¡£ËùÒÔSunÈÃJAVA2µÄJDK¸ü´ÏÃ÷һЩ¡£Äã»á·¢ÏÖ£¬ÔÚÄã°²×°Ö®ºó£¬¼´Ê¹ÍêȫûÓÐÉ趨CLASSPATH£¬ÄãÈÔÈ»Äܹ»±àÒë»ù±¾µÄJAVA³ÌÐò£¬²¢ÇÒ¼ÓÒÔÖ´ÐС£

PATH»·¾³±äÁ¿

PATH»·¾³±äÁ¿¡£×÷ÓÃÊÇÖ¸¶¨ÃüÁîËÑË÷·¾¶£¬ÔÚÃüÁîÐÐÏÂÃæÖ´ÐÐÃüÁîÈçjavac±àÒëjava³ÌÐòʱ£¬Ëü»áµ½PATH±äÁ¿ËùÖ¸¶¨µÄ·¾¶ÖвéÕÒ¿´ÊÇ·ñÄÜÕÒµ½ÏàÓ¦µÄÃüÁî³ÌÐò¡£ÎÒÃÇÐèÒª°Ñjdk°²×°Ä¿Â¼ÏµÄbinĿ¼Ôö¼Óµ½ÏÖÓеÄPATH±äÁ¿ÖУ¬binĿ¼Öаüº¬¾­³£ÒªÓõ½µÄ¿ÉÖ´ÐÐÎļþÈçjavac/java/javadocµÈ´ý£¬ÉèÖúÃPATH±äÁ¿ºó£¬¾Í¿ÉÒÔÔÚÈκÎĿ¼ÏÂÖ´ÐÐjavac/javaµÈ¹¤¾ßÁË¡£

4£¬javacÃüÁîºÍjavaÃüÁî×öʲôÊÂÇéÄØ£¿

ÒªÖªµÀjavaÊÇ·ÖÁ½²¿·ÖµÄ£ºÒ»¸öÊDZàÒ룬һ¸öÊÇÔËÐС£

javac£º¸ºÔðµÄÊDZàÒëµÄ²¿·Ö£¬µ±Ö´ÐÐjavacʱ£¬»áÆô¶¯javaµÄ±àÒëÆ÷³ÌÐò¡£¶ÔÖ¸¶¨À©Õ¹ÃûµÄ.javaÎļþ½øÐбàÒë¡£ Éú³ÉÁËjvm¿ÉÒÔʶ±ðµÄ×Ö½ÚÂëÎļþ¡£Ò²¾ÍÊÇclassÎļþ£¬Ò²¾ÍÊÇjavaµÄÔËÐгÌÐò¡£

java£º¸ºÔðÔËÐеIJ¿·Ö.»áÆô¶¯jvm.¼ÓÔØÔËÐÐʱËùÐèµÄÀà¿â,²¢¶ÔclassÎļþ½øÐÐÖ´ÐÐ.

Ò»¸öÎļþÒª±»Ö´ÐÐ,±ØÐëÒªÓÐÒ»¸öÖ´ÐÐµÄÆðʼµã,Õâ¸öÆðʼµã¾ÍÊÇmainº¯Êý.

¶þ£ºjavaÓï·¨»ù´¡£º

±êʾ·û£º

1£©£¬Êý×Ö²»¿ÉÒÔ¿ªÍ·¡£

2£©£¬²»¿ÉÒÔʹÓùؼü×Ö¡£

±äÁ¿µÄ×÷ÓÃÓòºÍÉú´æÆÚ:

±äÁ¿µÄ×÷ÓÃÓò£º

×÷ÓÃÓò´Ó±äÁ¿¶¨ÒåµÄλÖÿªÊ¼£¬µ½¸Ã±äÁ¿ËùÔÚµÄÄǶԴóÀ¨ºÅ½áÊø£»

ÉúÃüÖÜÆÚ£º

±äÁ¿´Ó¶¨ÒåµÄλÖÿªÊ¼¾ÍÔÚÄÚ´æÖлîÁË£»

±äÁ¿µ½´ïËüËùÔÚµÄ×÷ÓÃÓòµÄʱºò¾ÍÔÚÄÚ´æÖÐÏûʧÁË£»

Êý¾ÝÀàÐÍ£º

1£©£º»ù±¾Êý¾ÝÀàÐÍ£ºbyte¡¢short¡¢int¡¢long¡¢float¡¢double¡¢char¡¢boolean

ÔËËã·ûºÅ£º

4£©¡¢Âß¼­ÔËËã·û¡£

& | ^ ! && ||

Âß¼­ÔËËã·û³ýÁË ! Íâ¶¼ÊÇÓÃÓÚÁ¬½ÓÁ½¸öbooleanÀàÐͱí´ïʽ¡£

&: Ö»ÓÐÁ½±ß¶¼Îªtrue½á¹ûÊÇtrue¡£·ñÔò¾ÍÊÇfalse¡£

|:Ö»ÒªÁ½±ß¶¼Îªfalse½á¹ûÊÇfalse£¬·ñÔò¾ÍÊÇtrue

^:Òì»ò£ººÍ»òÓе㲻һÑù¡£

Á½±ß½á¹ûÒ»Ñù£¬¾ÍΪfalse¡£

Á½±ß½á¹û²»Ò»Ñù£¬¾ÍΪtrue.

& ºÍ &&Çø±ð£º & £ºÎÞÂÛ×ó±ß½á¹ûÊÇʲô£¬Óұ߶¼²ÎÓëÔËËã¡£

&&:¶Ì·Ó룬Èç¹û×ó±ßΪfalse£¬ÄÇôÓұ߲»²ÎÊýÓëÔËËã¡£

| ºÍ|| Çø±ð£º|£ºÁ½±ß¶¼ÔËËã¡£

||£º¶Ì·»ò£¬Èç¹û×ó±ßΪtrue£¬ÄÇôÓұ߲»²ÎÓëÔËËã¡£

5£©¡¢Î»ÔËËã·û:ÓÃÓÚ²Ù×÷¶þ½øÖÆÎ»µÄÔËËã·û¡£

& | ^

<< >> >>>(ÎÞ·ûºÅÓÒÒÆ)

Á·Ï°£º¶ÔÁ½¸ö±äÁ¿µÄÊý¾Ý½øÐл¥»»¡£²»ÐèÒªµÚÈý·½±äÁ¿¡£
int a = 3,b = 5;-->b = 3,a = 5;
·½·¨Ò»£º
a = a + b; a = 8;
b = a - b; b = 3;
a = a - b; a = 5;
·½·¨¶þ£º
a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//a = a ^ b ^ a = b;
Á·Ï°£º¸ßЧµÄËã³ö 2*8 = 2<<3;

ÖØÔØµÄ¶¨ÒåÊÇ£ºÔÚÒ»¸öÀàÖУ¬Èç¹û³öÏÖÁËÁ½¸ö»òÕßÁ½¸öÒÔÉϵÄͬÃûº¯Êý£¬Ö»ÒªËüÃǵIJÎÊýµÄ¸öÊý£¬»òÕß²ÎÊýµÄÀàÐͲ»Í¬£¬¼´¿É³ÆÖ®Îª¸Ãº¯ÊýÖØÔØÁË¡£

ÈçºÎÇø·ÖÖØÔØ£ºµ±º¯ÊýͬÃûʱ£¬Ö»¿´²ÎÊýÁÐ±í¡£ºÍ·µ»ØÖµÀàÐÍû¹ØÏµ¡£

ÖØÐ´£º¸¸ÀàÓë×ÓÀàÖ®¼äµÄ¶à̬ÐÔ£¬¶Ô¸¸ÀàµÄº¯Êý½øÐÐÖØÐ¶¨Òå¡£Èç¹ûÔÚ×ÓÀàÖж¨Òåij·½·¨ÓëÆä¸¸ÀàÓÐÏàͬµÄÃû³ÆºÍ²ÎÊý£¬ÎÒÃÇ˵¸Ã·½·¨±»ÖØÐ´ (Overriding)¡£

JavaÄÚ´æ¹ÜÀí

JavaÄÚ´æ¹ÜÀí£ºÉîÈëJavaÄÚ´æÇøÓò

JavaÓëC++Ö®¼äÓÐÒ»¶ÂÓÉÄڴ涯̬·ÖÅäºÍÀ¬»øÊÕ¼¯¼¼ÊõËùΧ³ÉµÄ¸ßǽ£¬Ç½ÍâÃæµÄÈËÏë½øÈ¥£¬Ç½ÀïÃæµÄÈËÈ´Ïë³öÀ´¡£

¸ÅÊö£º

¶ÔÓÚ´ÓÊÂCºÍC++³ÌÐò¿ª·¢µÄ¿ª·¢ÈËÔ±À´Ëµ£¬ÔÚÄÚ´æ¹ÜÀíÁìÓò£¬ËûÃǼÈÊÇÓµÓÐ×î¸ßȨÁ¦µÄ»ÊµÛ£¬ÓÖÊÇ´ÓÊÂ×î»ù´¡¹¤×÷µÄÀͶ¯ÈËÃñ¡ª¼ÈÓµÓÐÿһ¸ö¶ÔÏóµÄ"ËùÓÐȨ"£¬ÓÖµ£¸º×Åÿһ¸ö¶ÔÏóÉúÃü¿ªÊ¼µ½ÖÕ½áµÄά»¤ÔðÈΡ£

¶ÔÓÚJava³ÌÐòÔ±À´Ëµ£¬ÔÚÐéÄâ»úµÄ×Ô¶¯ÄÚ´æ¹ÜÀí»úÖÆµÄ°ïÖúÏ£¬²»ÔÙÐèҪΪÿһ¸önew²Ù×÷ȥдÅä¶ÔµÄdelete/free´úÂ룬¶øÇÒ²»ÈÝÒ׳öÏÖÄÚ´æÐ¹Â©ºÍÄÚ´æÒç³öÎÊÌ⣬¿´ÆðÀ´ÓÉÐéÄâ»ú¹ÜÀíÄÚ´æÒ»Çж¼ºÜÃÀºÃ¡£²»¹ý£¬Ò²ÕýÊÇÒòΪJava³ÌÐòÔ±°ÑÄÚ´æ¿ØÖÆµÄȨÁ¦½»¸øÁËJavaÐéÄâ»ú£¬Ò»µ©³öÏÖÄÚ´æÐ¹Â©ºÍÒç³ö·½ÃæµÄÎÊÌ⣬Èç¹û²»Á˽âÐéÄâ»úÊÇÔõÑùʹÓÃÄÚ´æµÄ£¬ÄÇÅŲé´íÎ󽫻á³ÉΪһÏîÒì³£¼èÄѵŤ×÷¡£

ÔËÐÐʱÊý¾ÝÇøÓò

JavaÐéÄâ»úÔÚÖ´ÐÐJava³ÌÐòµÄ¹ý³ÌÖлá°ÑËüËù¹ÜÀíµÄÄÚ´æ»®·ÖΪÈô¸É¸ö²»Í¬µÄÊý¾ÝÇøÓò¡£ÕâÐ©ÇøÓò¶¼Óи÷×ÔµÄÓÃ;£¬ÒÔ¼°´´½¨ºÍÏú»ÙµÄʱ¼ä£¬ÓеÄÇøÓòËæ×ÅÐéÄâ»ú½ø³ÌµÄÆô¶¯¶ø´æÔÚ£¬ÓÐÐ©ÇøÓòÔòÊÇÒÀÀµÓû§Ïß³ÌµÄÆô¶¯ºÍ½áÊø¶ø½¨Á¢ºÍÏú»Ù¡£¸ù¾Ý¡¶JavaÐéÄâ»ú¹æ·¶£¨µÚ2°æ£©¡·µÄ¹æ¶¨£¬JavaÐéÄâ»úËù¹ÜÀíµÄÄڴ潫»á°üÀ¨ÒÔϼ¸¸öÔËÐÐʱÊý¾ÝÇøÓò£¬ÈçÏÂͼËùʾ£º

³ÌÐò¼ÆÊýÆ÷¡¡¡¡¡¡¡¡¡¡

³ÌÐò¼ÆÊýÆ÷£¨Program Counter Register£©ÊÇÒ»¿é½ÏСµÄÄÚ´æ¿Õ¼ä£¬ËüµÄ×÷ÓÿÉÒÔ¿´×öÊǵ±Ç°Ïß³ÌËùÖ´ÐеÄ×Ö½ÚÂëµÄÐкÅָʾÆ÷¡£ÔÚÐéÄâ»úµÄ¸ÅÄîÄ£ÐÍÀ½öÊǸÅÄîÄ£ÐÍ£¬¸÷ÖÖÐéÄâ»ú¿ÉÄÜ»áͨ¹ýһЩ¸ü¸ßЧµÄ·½Ê½È¥ÊµÏÖ£©£¬×Ö½ÚÂë½âÊÍÆ÷¹¤×÷ʱ¾ÍÊÇͨ¹ý¸Ä±äÕâ¸ö¼ÆÊýÆ÷µÄÖµÀ´Ñ¡È¡ÏÂÒ»ÌõÐèÒªÖ´ÐеÄ×Ö½ÚÂëÖ¸Á·ÖÖ§¡¢Ñ­»·¡¢Ìø×ª¡¢Òì³£´¦Àí¡¢Ïָ̻߳´µÈ»ù´¡¹¦Äܶ¼ÐèÒªÒÀÀµÕâ¸ö¼ÆÊýÆ÷À´Íê³É¡£ ÓÉÓÚJavaÐéÄâ»úµÄ¶àÏß³ÌÊÇͨ¹ýÏß³ÌÂÖÁ÷Çл»²¢·ÖÅä´¦ÀíÆ÷Ö´ÐÐʱ¼äµÄ·½Ê½À´ÊµÏֵģ¬ÔÚÈκÎÒ»¸öÈ·¶¨µÄʱ¿Ì£¬Ò»¸ö´¦ÀíÆ÷£¨¶ÔÓÚ¶àºË´¦ÀíÆ÷À´ËµÊÇÒ»¸öÄںˣ©Ö»»áÖ´ÐÐÒ»ÌõÏß³ÌÖеÄÖ¸Áî¡£Òò´Ë£¬ÎªÁËÏß³ÌÇл»ºóÄָܻ´µ½ÕýÈ·µÄÖ´ÐÐλÖã¬Ã¿ÌõÏ̶߳¼ÐèÒªÓÐÒ»¸ö¶ÀÁ¢µÄ³ÌÐò¼ÆÊýÆ÷£¬¸÷ÌõÏß³ÌÖ®¼äµÄ¼ÆÊýÆ÷»¥²»Ó°Ï죬¶ÀÁ¢´æ´¢£¬ÎÒÃdzÆÕâÀàÄÚ´æÇøÓòΪ"Ïß³Ì˽ÓÐ"µÄÄÚ´æ¡£ Èç¹ûÏß³ÌÕýÔÚÖ´ÐеÄÊÇÒ»¸öJava·½·¨£¬Õâ¸ö¼ÆÊýÆ÷¼Ç¼µÄÊÇÕýÔÚÖ´ÐеÄÐéÄâ»ú×Ö½ÚÂëÖ¸ÁîµÄµØÖ·£»Èç¹ûÕýÔÚÖ´ÐеÄÊÇNatvie·½·¨£¬Õâ¸ö¼ÆÊýÆ÷ÖµÔòΪ¿Õ£¨Undefined£©¡£´ËÄÚ´æÇøÓòÊÇΨһһ¸öÔÚJavaÐéÄâ»ú¹æ·¶ÖÐûÓй涨ÈκÎOutOfMemoryErrorÇé¿öµÄÇøÓò¡£

JavaÐéÄâ»úÕ»

Óë³ÌÐò¼ÆÊýÆ÷Ò»Ñù£¬JavaÐéÄâ»úÕ»£¨Java Virtual Machine Stacks£©Ò²ÊÇÏß³Ì˽Óеģ¬ËüµÄÉúÃüÖÜÆÚÓëÏß³ÌÏàͬ¡£ÐéÄâ»úÕ»ÃèÊöµÄÊÇJava·½·¨Ö´ÐеÄÄÚ´æÄ£ÐÍ£ºÃ¿¸ö·½·¨±»Ö´ÐеÄʱºò¶¼»áͬʱ´´½¨Ò»¸öÕ»Ö¡£¨Stack Frame£©ÓÃÓÚ´æ´¢¾Ö²¿±äÁ¿±í¡¢²Ù×÷Õ»¡¢¶¯Ì¬Á´½Ó¡¢·½·¨³ö¿ÚµÈÐÅÏ¢¡£Ã¿Ò»¸ö·½·¨±»µ÷ÓÃÖ±ÖÁÖ´ÐÐÍê³ÉµÄ¹ý³Ì£¬¾Í¶ÔÓ¦×ÅÒ»¸öÕ»Ö¡ÔÚÐéÄâ»úÕ»ÖдÓÈëÕ»µ½³öÕ»µÄ¹ý³Ì¡£

¾­³£ÓÐÈ˰ÑJavaÄÚ´æÇø·ÖΪ¶ÑÄڴ棨Heap£©ºÍÕ»Äڴ棨Stack£©£¬ÕâÖÖ·Ö·¨±È½Ï´Ö²Ú£¬JavaÄÚ´æÇøÓòµÄ»®·Öʵ¼ÊÉÏÔ¶±ÈÕ⸴ÔÓ¡£ÕâÖÖ»®·Ö·½Ê½µÄÁ÷ÐÐÖ»ÄÜ˵Ã÷´ó¶àÊý³ÌÐòÔ±×î¹Ø×¢µÄ¡¢Óë¶ÔÏóÄÚ´æ·ÖÅä¹ØÏµ×îÃÜÇеÄÄÚ´æÇøÓòÊÇÕâÁ½¿é¡£ÆäÖÐËùÖ¸µÄ"¶Ñ"ÔÚºóÃæ»áרÃŽ²Êö£¬¶øËùÖ¸µÄ"Õ»"¾ÍÊÇÏÖÔÚ½²µÄÐéÄâ»úÕ»£¬»òÕß˵ÊÇÐéÄâ»úÕ»Öеľֲ¿±äÁ¿±í²¿·Ö¡£

¾Ö²¿±äÁ¿±í´æ·ÅÁ˱àÒëÆÚ¿ÉÖªµÄ¸÷ÖÖ»ù±¾Êý¾ÝÀàÐÍ£¨boolean¡¢byte¡¢char¡¢short¡¢int¡¢float¡¢long¡¢double£©¡¢¶ÔÏóÒýÓã¨referenceÀàÐÍ£©£¬Ëü²»µÈͬÓÚ¶ÔÏó±¾Éí£¬¸ù¾Ý²»Í¬µÄÐéÄâ»úʵÏÖ£¬Ëü¿ÉÄÜÊÇÒ»¸öÖ¸Ïò¶ÔÏóÆðʼµØÖ·µÄÒýÓÃÖ¸Õ룬Ҳ¿ÉÄÜÖ¸ÏòÒ»¸ö´ú±í¶ÔÏóµÄ¾ä±ú»òÕ߯äËûÓë´Ë¶ÔÏóÏà¹ØµÄλÖ㩺ÍreturnAddressÀàÐÍ£¨Ö¸ÏòÁËÒ»Ìõ×Ö½ÚÂëÖ¸ÁîµÄµØÖ·£©¡£

ÆäÖÐ64볤¶ÈµÄlongºÍdoubleÀàÐ͵ÄÊý¾Ý»áÕ¼ÓÃ2¸ö¾Ö²¿±äÁ¿¿Õ¼ä£¨Slot£©£¬ÆäÓàµÄÊý¾ÝÀàÐÍÖ»Õ¼ÓÃ1¸ö¡£¾Ö²¿±äÁ¿±íËùÐèµÄÄÚ´æ¿Õ¼äÔÚ±àÒëÆÚ¼äÍê³É·ÖÅ䣬µ±½øÈëÒ»¸ö·½·¨Ê±£¬Õâ¸ö·½·¨ÐèÒªÔÚÖ¡ÖзÖÅä¶à´óµÄ¾Ö²¿±äÁ¿¿Õ¼äÊÇÍêȫȷ¶¨µÄ£¬ÔÚ·½·¨ÔËÐÐÆÚ¼ä²»»á¸Ä±ä¾Ö²¿±äÁ¿±íµÄ´óС¡£ ÔÚJavaÐéÄâ»ú¹æ·¶ÖУ¬¶ÔÕâ¸öÇøÓò¹æ¶¨ÁËÁ½ÖÖÒì³£×´¿ö£ºÈç¹ûÏß³ÌÇëÇóµÄÕ»Éî¶È´óÓÚÐéÄâ»úËùÔÊÐíµÄÉî¶È£¬½«Å׳öStackOverflowErrorÒì³££»Èç¹ûÐéÄâ»úÕ»¿ÉÒÔ¶¯Ì¬À©Õ¹£¨µ±Ç°´ó²¿·ÖµÄJavaÐéÄâ»ú¶¼¿É¶¯Ì¬À©Õ¹£¬Ö»²»¹ýJavaÐéÄâ»ú¹æ·¶ÖÐÒ²ÔÊÐí¹Ì¶¨³¤¶ÈµÄÐéÄâ»úÕ»£©£¬µ±À©Õ¹Ê±ÎÞ·¨ÉêÇëµ½×ã¹»µÄÄÚ´æÊ±»áÅ׳öOutOfMemoryErrorÒì³£¡£

±¾µØ·½·¨Õ»

¡¡¡¡±¾µØ·½·¨Õ»£¨Native Method Stacks£©ÓëÐéÄâ»úÕ»Ëù·¢»ÓµÄ×÷ÓÃÊǷdz£ÏàËÆµÄ£¬ÆäÇø±ð²»¹ýÊÇÐéÄâ»úջΪÐéÄâ»úÖ´ÐÐJava·½·¨£¨Ò²¾ÍÊÇ×Ö½ÚÂ룩·þÎñ£¬¶ø±¾µØ·½·¨Õ»ÔòÊÇΪÐéÄâ»úʹÓõ½µÄNative·½·¨·þÎñ¡£ÐéÄâ»ú¹æ·¶ÖжԱ¾µØ·½·¨Õ»Öеķ½·¨Ê¹ÓõÄÓïÑÔ¡¢Ê¹Ó÷½Ê½ÓëÊý¾Ý½á¹¹²¢Ã»ÓÐÇ¿ÖÆ¹æ¶¨£¬Òò´Ë¾ßÌåµÄÐéÄâ»ú¿ÉÒÔ×ÔÓÉʵÏÖËü¡£ÉõÖÁÓеÄÐéÄâ»ú£¨Æ©ÈçSun HotSpotÐéÄâ»ú£©Ö±½Ó¾Í°Ñ±¾µØ·½·¨Õ»ºÍÐéÄâ»úÕ»ºÏ¶þΪһ¡£ÓëÐéÄâ»úÕ»Ò»Ñù£¬±¾µØ·½·¨Õ»ÇøÓòÒ²»áÅ׳öStackOverflowErrorºÍOutOfMemoryErrorÒì³£¡£

Java¶Ñ

¡¡¡¡¶ÔÓÚ´ó¶àÊýÓ¦ÓÃÀ´Ëµ£¬Java¶Ñ£¨Java Heap£©ÊÇJavaÐéÄâ»úËù¹ÜÀíµÄÄÚ´æÖÐ×î´óµÄÒ»¿é¡£Java¶ÑÊDZ»ËùÓÐÏ̹߳²ÏíµÄÒ»¿éÄÚ´æÇøÓò£¬ÔÚÐéÄâ»úÆô¶¯Ê±´´½¨¡£´ËÄÚ´æÇøÓòµÄΨһĿµÄ¾ÍÊÇ´æ·Å¶ÔÏóʵÀý£¬¼¸ºõËùÓеĶÔÏóʵÀý¶¼ÔÚÕâÀï·ÖÅäÄÚ´æ¡£ÕâÒ»µãÔÚJavaÐéÄâ»ú¹æ·¶ÖеÄÃèÊöÊÇ£ºËùÓеĶÔÏóʵÀýÒÔ¼°Êý×é¶¼ÒªÔÚ¶ÑÉÏ·ÖÅ䣬µ«ÊÇËæ×ÅJIT±àÒëÆ÷µÄ·¢Õ¹ÓëÌÓÒÝ·ÖÎö¼¼ÊõµÄÖð½¥³ÉÊ죬ջÉÏ·ÖÅä¡¢±êÁ¿Ìæ»»ÓÅ»¯¼¼Êõ½«»áµ¼ÖÂһЩ΢ÃîµÄ±ä»¯·¢Éú£¬ËùÓеĶÔÏó¶¼·ÖÅäÔÚ¶ÑÉÏÒ²½¥½¥±äµÃ²»ÊÇÄÇô"¾ø¶Ô"ÁË¡£

Java¶ÑÊÇÀ¬»øÊÕ¼¯Æ÷¹ÜÀíµÄÖ÷񻂿Óò£¬Òò´ËºÜ¶àʱºòÒ²±»³Æ×ö"GC¶Ñ"£¨Garbage Collected Heap£¬ÐҺùúÄÚû·­Òë³É"À¬»ø¶Ñ"£©¡£Èç¹û´ÓÄÚ´æ»ØÊյĽǶȿ´£¬ÓÉÓÚÏÖÔÚÊÕ¼¯Æ÷»ù±¾¶¼ÊDzÉÓõķִúÊÕ¼¯Ëã·¨£¬ËùÒÔJava¶ÑÖл¹¿ÉÒÔϸ·ÖΪ£ºÐÂÉú´úºÍÀÏÄê´ú£»ÔÙϸÖÂÒ»µãµÄÓÐEden¿Õ¼ä¡¢From Survivor¿Õ¼ä¡¢To Survivor¿Õ¼äµÈ¡£Èç¹û´ÓÄÚ´æ·ÖÅäµÄ½Ç¶È¿´£¬Ï̹߳²ÏíµÄJava¶ÑÖпÉÄÜ»®·Ö³ö¶à¸öÏß³Ì˽ÓеķÖÅ仺³åÇø£¨Thread Local Allocation Buffer£¬TLAB£©¡£²»¹ý£¬ÎÞÂÛÈçºÎ»®·Ö£¬¶¼Óë´æ·ÅÄÚÈÝÎ޹أ¬ÎÞÂÛÄĸöÇøÓò£¬´æ´¢µÄ¶¼ÈÔÈ»ÊǶÔÏóʵÀý£¬½øÒ»²½»®·ÖµÄÄ¿µÄÊÇΪÁ˸üºÃµØ»ØÊÕÄڴ棬»òÕ߸ü¿ìµØ·ÖÅäÄÚ´æ¡£ÔÚ±¾ÕÂÖУ¬ÎÒÃǽö½öÕë¶ÔÄÚ´æÇøÓòµÄ×÷ÓýøÐÐÌÖÂÛ£¬Java¶ÑÖеÄÉÏÊö¸÷¸öÇøÓòµÄ·ÖÅäºÍ»ØÊÕµÈϸ½Ú½«»áÊÇÏÂÒ»ÕµÄÖ÷Ìâ¡£

¸ù¾ÝJavaÐéÄâ»ú¹æ·¶µÄ¹æ¶¨£¬Java¶Ñ¿ÉÒÔ´¦ÓÚÎïÀíÉϲ»Á¬ÐøµÄÄÚ´æ¿Õ¼äÖУ¬Ö»ÒªÂß¼­ÉÏÊÇÁ¬ÐøµÄ¼´¿É£¬¾ÍÏñÎÒÃǵĴÅÅ̿ռäÒ»Ñù¡£ÔÚʵÏÖʱ£¬¼È¿ÉÒÔʵÏֳɹ̶¨´óСµÄ£¬Ò²¿ÉÒÔÊÇ¿ÉÀ©Õ¹µÄ£¬²»¹ýµ±Ç°Ö÷Á÷µÄÐéÄâ»ú¶¼Êǰ´ÕÕ¿ÉÀ©Õ¹À´ÊµÏֵģ¨Í¨¹ý-XmxºÍ-Xms¿ØÖÆ£©¡£Èç¹ûÔÚ¶ÑÖÐûÓÐÄÚ´æÍê³ÉʵÀý·ÖÅ䣬²¢ÇÒ¶ÑÒ²ÎÞ·¨ÔÙÀ©Õ¹Ê±£¬½«»áÅ׳öOutOfMemoryErrorÒì³£¡£

·½·¨Çø

·½·¨Çø£¨Method Area£©ÓëJava¶ÑÒ»Ñù£¬ÊǸ÷¸öÏ̹߳²ÏíµÄÄÚ´æÇøÓò£¬ËüÓÃÓÚ´æ´¢Òѱ»ÐéÄâ»ú¼ÓÔØµÄÀàÐÅÏ¢¡¢³£Á¿¡¢¾²Ì¬±äÁ¿¡¢¼´Ê±±àÒëÆ÷±àÒëºóµÄ´úÂëµÈÊý¾Ý¡£ËäÈ»JavaÐéÄâ»ú¹æ·¶°Ñ·½·¨ÇøÃèÊöΪ¶ÑµÄÒ»¸öÂß¼­²¿·Ö£¬µ«ÊÇËüÈ´ÓÐÒ»¸ö±ðÃû½Ð×öNon-Heap£¨·Ç¶Ñ£©£¬Ä¿µÄÓ¦¸ÃÊÇÓëJava¶ÑÇø·Ö¿ªÀ´¡£

¶ÔÓÚϰ¹ßÔÚHotSpotÐéÄâ»úÉÏ¿ª·¢ºÍ²¿Êð³ÌÐòµÄ¿ª·¢ÕßÀ´Ëµ£¬ºÜ¶àÈËÔ¸Òâ°Ñ·½·¨Çø³ÆÎª"ÓÀ¾Ã´ú"Permanent Generation£©£¬±¾ÖÊÉÏÁ½Õß²¢²»µÈ¼Û£¬½ö½öÊÇÒòΪHotSpotÐéÄâ»úµÄÉè¼ÆÍŶÓÑ¡Ôñ°ÑGC·Ö´úÊÕ¼¯À©Õ¹ÖÁ·½·¨Çø£¬»òÕß˵ʹÓÃÓÀ¾Ã´úÀ´ÊµÏÖ·½·¨Çø¶øÒÑ¡£¶ÔÓÚÆäËûÐéÄâ»ú£¨ÈçBEA JRockit¡¢IBM J9µÈ£©À´ËµÊDz»´æÔÚÓÀ¾Ã´úµÄ¸ÅÄîµÄ¡£¼´Ê¹ÊÇHotSpotÐéÄâ»ú±¾Éí£¬¸ù¾Ý¹Ù·½·¢²¼µÄ·ÏßͼÐÅÏ¢£¬ÏÖÔÚÒ²ÓÐ·ÅÆúÓÀ¾Ã´ú²¢"°á¼Ò"ÖÁNative MemoryÀ´ÊµÏÖ·½·¨ÇøµÄ¹æ»®ÁË¡£

JavaÐéÄâ»ú¹æ·¶¶ÔÕâ¸öÇøÓòµÄÏÞÖÆ·Ç³£¿íËÉ£¬³ýÁ˺ÍJava¶ÑÒ»Ñù²»ÐèÒªÁ¬ÐøµÄÄÚ´æºÍ¿ÉÒÔÑ¡Ôñ¹Ì¶¨´óС»òÕß¿ÉÀ©Õ¹Í⣬»¹¿ÉÒÔÑ¡Ôñ²»ÊµÏÖÀ¬»øÊÕ¼¯¡£Ïà¶Ô¶øÑÔ£¬À¬»øÊÕ¼¯ÐÐΪÔÚÕâ¸öÇøÓòÊDZȽÏÉÙ³öÏֵ쬵«²¢·ÇÊý¾Ý½øÈëÁË·½·¨Çø¾ÍÈçÓÀ¾Ã´úµÄÃû×ÖÒ»Ñù"ÓÀ¾Ã"´æÔÚÁË¡£Õâ¸öÇøÓòµÄÄÚ´æ»ØÊÕÄ¿±êÖ÷ÒªÊÇÕë¶Ô³£Á¿³ØµÄ»ØÊպͶÔÀàÐ͵ÄÐ¶ÔØ£¬Ò»°ãÀ´ËµÕâ¸öÇøÓòµÄ»ØÊÕ"³É¼¨"±È½ÏÄÑÒÔÁîÈËÂúÒ⣬ÓÈÆäÊÇÀàÐ͵ÄÐ¶ÔØ£¬Ìõ¼þÏ൱¿Á¿Ì£¬µ«ÊÇÕⲿ·ÖÇøÓòµÄ»ØÊÕȷʵÊÇÓбØÒªµÄ¡£ÔÚSun¹«Ë¾µÄBUGÁбíÖУ¬¡¡¡¡Ôø³öÏÖ¹ýµÄÈô¸É¸öÑÏÖØµÄBUG¾ÍÊÇÓÉÓڵͰ汾µÄHotSpotÐéÄâ»ú¶Ô´ËÇøÓòδÍêÈ«»ØÊÕ¶øµ¼ÖÂÄÚ´æÐ¹Â©¡£¸ù¾ÝJavaÐéÄâ»ú¹æ·¶µÄ¹æ¶¨£¬µ±·½·¨ÇøÎÞ·¨Âú×ãÄÚ´æ·ÖÅäÐèÇóʱ£¬½«Å׳öOutOfMemoryErrorÒì³£¡£

ÔËÐÐʱ³£Á¿³Ø

ÔËÐÐʱ³£Á¿³Ø£¨Runtime Constant Pool£©ÊÇ·½·¨ÇøµÄÒ»²¿·Ö¡£ClassÎļþÖгýÁËÓÐÀàµÄ°æ±¾¡¢×ֶΡ¢·½·¨¡¢½Ó¿ÚµÈÃèÊöµÈÐÅÏ¢Í⣬»¹ÓÐÒ»ÏîÐÅÏ¢Êdz£Á¿³Ø£¨Constant Pool Table£©£¬ÓÃÓÚ´æ·Å±àÒëÆÚÉú³ÉµÄ¸÷ÖÖ×ÖÃæÁ¿ºÍ·ûºÅÒýÓã¬Õⲿ·ÖÄÚÈݽ«ÔÚÀà¼ÓÔØºó´æ·Åµ½·½·¨ÇøµÄÔËÐÐʱ³£Á¿³ØÖС£ JavaÐéÄâ»ú¶ÔClassÎļþµÄÿһ²¿·Ö£¨×ÔȻҲ°üÀ¨³£Á¿³Ø£©µÄ¸ñʽ¶¼ÓÐÑϸñµÄ¹æ¶¨£¬Ã¿Ò»¸ö×Ö½ÚÓÃÓÚ´æ´¢ÄÄÖÖÊý¾Ý¶¼±ØÐë·ûºÏ¹æ·¶ÉϵÄÒªÇó£¬ÕâÑù²Å»á±»ÐéÄâ»úÈϿɡ¢×°ÔغÍÖ´ÐС£µ«¶ÔÓÚÔËÐÐʱ³£Á¿³Ø£¬JavaÐéÄâ»ú¹æ·¶Ã»ÓÐ×öÈκÎϸ½ÚµÄÒªÇ󣬲»Í¬µÄÌṩÉÌʵÏÖµÄÐéÄâ»ú¿ÉÒÔ°´ÕÕ×Ô¼ºµÄÐèÒªÀ´ÊµÏÖÕâ¸öÄÚ´æÇøÓò¡£²»¹ý£¬Ò»°ãÀ´Ëµ£¬³ýÁ˱£´æClassÎļþÖÐÃèÊöµÄ·ûºÅÒýÓÃÍ⣬»¹»á°Ñ·­Òë³öÀ´µÄÖ±½ÓÒýÓÃÒ²´æ´¢ÔÚÔËÐÐʱ³£Á¿³ØÖС£ÔËÐÐʱ³£Á¿³ØÏà¶ÔÓÚClassÎļþ³£Á¿³ØµÄÁíÍâÒ»¸öÖØÒªÌØÕ÷ÊǾ߱¸¶¯Ì¬ÐÔ£¬JavaÓïÑÔ²¢²»ÒªÇó³£Á¿Ò»¶¨Ö»ÄÜÔÚ±àÒëÆÚ²úÉú£¬Ò²¾ÍÊDz¢·ÇÔ¤ÖÃÈëClassÎļþÖг£Á¿³ØµÄÄÚÈݲÅÄܽøÈë·½·¨ÇøÔËÐÐʱ³£Á¿³Ø£¬ÔËÐÐÆÚ¼äÒ²¿ÉÄܽ«Ðµij£Á¿·ÅÈë³ØÖУ¬ÕâÖÖÌØÐÔ±»¿ª·¢ÈËÔ±ÀûÓõñȽ϶àµÄ±ãÊÇStringÀàµÄintern()·½·¨¡£¼ÈÈ»ÔËÐÐʱ³£Á¿³ØÊÇ·½·¨ÇøµÄÒ»²¿·Ö£¬×ÔÈ»»áÊܵ½·½·¨ÇøÄÚ´æµÄÏÞÖÆ£¬µ±³£Á¿³ØÎÞ·¨ÔÙÉêÇëµ½ÄÚ´æÊ±»áÅ׳öOutOfMemoryErrorÒì³£¡£

¶ÔÏó·ÃÎÊ

½éÉÜÍêJavaÐéÄâ»úµÄÔËÐÐʱÊý¾ÝÇøÖ®ºó£¬ÎÒÃǾͿÉÒÔÀ´Ì½ÌÖÒ»¸öÎÊÌ⣺ÔÚJavaÓïÑÔÖУ¬¶ÔÏó·ÃÎÊÊÇÈçºÎ½øÐеģ¿¶ÔÏó·ÃÎÊÔÚJavaÓïÑÔÖÐÎÞ´¦²»ÔÚ£¬ÊÇ×îÆÕͨµÄ³ÌÐòÐÐΪ£¬µ«¼´Ê¹ÊÇ×î¼òµ¥µÄ·ÃÎÊ£¬Ò²»áÈ´Éæ¼°JavaÕ»¡¢Java¶Ñ¡¢·½·¨ÇøÕâÈý¸ö×îÖØÒªÄÚ´æÇøÓòÖ®¼äµÄ¹ØÁª¹ØÏµ£¬ÈçÏÂÃæµÄÕâ¾ä´úÂ룺

¡¡Object obj = new Object();

¼ÙÉèÕâ¾ä´úÂë³öÏÖÔÚ·½·¨ÌåÖУ¬ÄÇ"Object obj"Õⲿ·ÖµÄÓïÒ彫»á·´Ó³µ½JavaÕ»µÄ±¾µØ±äÁ¿±íÖУ¬×÷Ϊһ¸öreferenceÀàÐÍÊý¾Ý³öÏÖ¡£¶ø"new Object()"Õⲿ·ÖµÄÓïÒ彫»á·´Ó³µ½Java¶ÑÖУ¬ÐγÉÒ»¿é´æ´¢ÁËObjectÀàÐÍËùÓÐʵÀýÊý¾ÝÖµ£¨Instance Data£¬¶ÔÏóÖи÷¸öʵÀý×ֶεÄÊý¾Ý£©µÄ½á¹¹»¯Äڴ棬¸ù¾Ý¾ßÌåÀàÐÍÒÔ¼°ÐéÄâ»úʵÏֵĶÔÏóÄÚ´æ²¼¾Ö£¨Object Memory Layout£©µÄ²»Í¬£¬Õâ¿éÄÚ´æµÄ³¤¶ÈÊDz»¹Ì¶¨µÄ¡£ÁíÍ⣬ÔÚJava¶ÑÖл¹±ØÐë°üº¬ÄܲéÕÒµ½´Ë¶ÔÏóÀàÐÍÊý¾Ý£¨Èç¶ÔÏóÀàÐÍ¡¢¸¸ÀࡢʵÏֵĽӿڡ¢·½·¨µÈ£©µÄµØÖ·ÐÅÏ¢£¬ÕâЩÀàÐÍÊý¾ÝÔò´æ´¢ÔÚ·½·¨ÇøÖС£

ÓÉÓÚreferenceÀàÐÍÔÚJavaÐéÄâ»ú¹æ·¶ÀïÃæÖ»¹æ¶¨ÁËÒ»¸öÖ¸Ïò¶ÔÏóµÄÒýÓ㬲¢Ã»Óж¨ÒåÕâ¸öÒýÓÃÓ¦¸Ãͨ¹ýÄÄÖÖ·½Ê½È¥¶¨Î»£¬ÒÔ¼°·ÃÎʵ½Java¶ÑÖеĶÔÏóµÄ¾ßÌåλÖã¬Òò´Ë²»Í¬ÐéÄâ»úʵÏֵĶÔÏó·ÃÎÊ·½Ê½»áÓÐËù²»Í¬£¬Ö÷Á÷µÄ·ÃÎÊ·½Ê½ÓÐÁ½ÖÖ£ºÊ¹Óþä±úºÍÖ±½ÓÖ¸Õë¡£ Èç¹ûʹÓþä±ú·ÃÎÊ·½Ê½£¬Java¶ÑÖн«»á»®·Ö³öÒ»¿éÄÚ´æÀ´×÷Ϊ¾ä±ú³Ø£¬referenceÖд洢µÄ¾ÍÊǶÔÏóµÄ¾ä±úµØÖ·£¬¶ø¾ä±úÖаüº¬Á˶ÔÏóʵÀýÊý¾ÝºÍÀàÐÍÊý¾Ý¸÷×ԵľßÌ嵨ַÐÅÏ¢£¬ÈçÏÂͼËùʾ£º

Èç¹ûʹÓõÄÊÇÖ±½ÓÖ¸Õë·ÃÎÊ·½Ê½£¬Java ¶Ñ¶ÔÏóµÄ²¼¾ÖÖоͱØÐ뿼ÂÇÈçºÎ·ÅÖ÷ÃÎÊÀàÐÍÊý¾ÝµÄÏà¹ØÐÅÏ¢£¬referenceÖÐÖ±½Ó´æ´¢µÄ¾ÍÊǶÔÏóµØÖ·£¬ÈçÏÂͼËùʾ£º

ÕâÁ½ÖÖ¶ÔÏóµÄ·ÃÎÊ·½Ê½¸÷ÓÐÓÅÊÆ£¬Ê¹Óþä±ú·ÃÎÊ·½Ê½µÄ×î´óºÃ´¦¾ÍÊÇreferenceÖд洢µÄÊÇÎȶ¨µÄ¾ä±úµØÖ·£¬ÔÚ¶ÔÏó±»Òƶ¯£¨À¬»øÊÕ¼¯Ê±Òƶ¯¶ÔÏóÊǷdz£ÆÕ±éµÄÐÐΪ£©Ê±Ö»»á¸Ä±ä¾ä±úÖеÄʵÀýÊý¾ÝÖ¸Õ룬¶øreference±¾Éí²»ÐèÒª±»Ð޸ġ£Ê¹ÓÃÖ±½ÓÖ¸Õë·ÃÎÊ·½Ê½µÄ×î´óºÃ´¦¾ÍÊÇËٶȸü¿ì£¬Ëü½ÚÊ¡ÁËÒ»´ÎÖ¸Õ붨λµÄʱ¼ä¿ªÏú£¬ÓÉÓÚ¶ÔÏóµÄ·ÃÎÊÔÚJavaÖзdz£Æµ·±£¬Òò´ËÕâÀ࿪Ïú»ýÉٳɶàºóÒ²ÊÇÒ»Ïî·Ç³£¿É¹ÛµÄÖ´Ðгɱ¾¡£¾Í±¾ÊéÌÖÂÛµÄÖ÷ÒªÐéÄâ»úSun HotSpot¶øÑÔ£¬ËüÊÇʹÓõڶþÖÖ·½Ê½½øÐжÔÏó·ÃÎʵ쬵«´ÓÕû¸öÈí¼þ¿ª·¢µÄ·¶Î§À´¿´£¬¸÷ÖÖÓïÑԺͿò¼ÜʹÓþä±úÀ´·ÃÎʵÄÇé¿öҲʮ·Ö³£¼û¡£

Èý£ºÃæÏò¶ÔÏ󣺡ï¡ï¡ï¡ï¡ï

Àà

ÄäÃû¶ÔÏóʹÓó¡¾°£º

1£ºµ±¶Ô·½·¨Ö»½øÐÐÒ»´Îµ÷ÓõÄʱºò£¬¿ÉÒÔʹÓÃÄäÃû¶ÔÏó¡£

2£ºµ±¶ÔÏó¶Ô³ÉÔ±½øÐжà´Îµ÷ÓÃʱ£¬²»ÄÜʹÓÃÄäÃû¶ÔÏó¡£±ØÐë¸ø¶ÔÏóÆðÃû×Ö¡£

ÀàÖÐÔõôûÓж¨ÒåÖ÷º¯ÊýÄØ£¿

×¢Ò⣺Ö÷º¯ÊýµÄ´æÔÚ£¬½öΪ¸ÃÀàÊÇ·ñÐèÒª¶ÀÁ¢ÔËÐУ¬Èç¹û²»ÐèÒª£¬Ö÷º¯ÊýÊDz»Óö¨ÒåµÄ¡£

Ö÷º¯ÊýµÄ½âÊÍ£º±£Ö¤ËùÔÚÀàµÄ¶ÀÁ¢ÔËÐУ¬ÊdzÌÐòµÄÈë¿Ú£¬±»jvmµ÷Óá£

³ÉÔ±±äÁ¿ºÍ¾Ö²¿±äÁ¿µÄÇø±ð£º

1£º³ÉÔ±±äÁ¿Ö±½Ó¶¨ÒåÔÚÀàÖС£

¾Ö²¿±äÁ¿¶¨ÒåÔÚ·½·¨ÖУ¬²ÎÊýÉÏ£¬Óï¾äÖС£

2£º³ÉÔ±±äÁ¿ÔÚÕâ¸öÀàÖÐÓÐЧ¡£

¾Ö²¿±äÁ¿Ö»ÔÚ×Ô¼ºËùÊôµÄ´óÀ¨ºÅÄÚÓÐЧ£¬´óÀ¨ºÅ½áÊø£¬¾Ö²¿±äÁ¿Ê§È¥×÷ÓÃÓò¡£

3£º³ÉÔ±±äÁ¿´æÔÚÓÚ¶ÑÄÚ´æÖУ¬Ëæ×ŶÔÏóµÄ²úÉú¶ø´æÔÚ£¬Ïûʧ¶øÏûʧ¡£

¾Ö²¿±äÁ¿´æÔÚÓÚÕ»ÄÚ´æÖУ¬Ëæ×ÅËùÊôÇøÓòµÄÔËÐжø´æÔÚ£¬½áÊø¶øÊÍ·Å¡£

¹¹Ô캯Êý£º

ÓÃÓÚ¸ø¶ÔÏó½øÐгõʼ»¯£¬ÊǸøÓëÖ®¶ÔÓ¦µÄ¶ÔÏó½øÐгõʼ»¯£¬Ëü¾ßÓÐÕë¶ÔÐÔ£¬º¯ÊýÖеÄÒ»ÖÖ¡£

ÌØµã£º

1£º¸Ãº¯ÊýµÄÃû³ÆºÍËùÔÚÀàµÄÃû³ÆÏàͬ¡£

2£º²»ÐèÒª¶¨Òå·µ»ØÖµÀàÐÍ¡£

3£º¸Ãº¯ÊýûÓоßÌåµÄ·µ»ØÖµ¡£

¼Çס£ºËùÓжÔÏó´´½¨Ê±£¬¶¼ÐèÒª³õʼ»¯²Å¿ÉÒÔʹÓá£

×¢ÒâÊÂÏһ¸öÀàÔÚ¶¨Òåʱ£¬Èç¹ûûÓж¨Òå¹ý¹¹Ô캯Êý£¬ÄÇô¸ÃÀàÖлá×Ô¶¯Éú³ÉÒ»¸ö¿Õ²ÎÊýµÄ¹¹Ô캯Êý£¬ÎªÁË·½±ã¸ÃÀà´´½¨¶ÔÏó£¬Íê³É³õʼ»¯¡£Èç¹ûÔÚÀàÖÐ×Ô¶¨ÒåÁ˹¹Ô캯Êý£¬ÄÇôĬÈϵĹ¹Ô캯Êý¾ÍûÓÐÁË¡£

Ò»¸öÀàÖУ¬¿ÉÒÔÓжà¸ö¹¹Ô캯Êý£¬ÒòΪËüÃǵĺ¯ÊýÃû³Æ¶¼Ïàͬ£¬ËùÒÔÖ»ÄÜͨ¹ý²ÎÊýÁбíÀ´Çø·Ö¡£ËùÒÔ£¬Ò»¸öÀàÖÐÈç¹û³öÏÖ¶à¸ö¹¹Ô캯Êý¡£ËüÃǵĴæÔÚÊÇÒÔÖØÔØÌåÏֵġ£

¹¹Ôì´úÂë¿éºÍ¹¹Ô캯ÊýÓÐÊ²Ã´Çø±ð£¿

¹¹Ôì´úÂë¿é£ºÊǸøËùÓеĶÔÏó½øÐгõʼ»¯£¬Ò²¾ÍÊÇ˵£¬ËùÓеĶÔÏó¶¼»áµ÷ÓÃÒ»¸ö´úÂë¿é¡£Ö»Òª¶ÔÏóÒ»½¨Á¢¡£¾Í»áµ÷ÓÃÕâ¸ö´úÂë¿é¡£

¹¹Ô캯Êý£ºÊǸøÓëÖ®¶ÔÓ¦µÄ¶ÔÏó½øÐгõʼ»¯¡£Ëü¾ßÓÐÕë¶ÔÐÔ¡£

Ö´ÐÐ˳Ðò£º£¨ÓÅÏȼ¶´Ó¸ßµ½µÍ¡££©¾²Ì¬´úÂë¿é>mian·½·¨>¹¹Ôì´úÂë¿é>¹¹Ôì·½·¨¡£ÆäÖо²Ì¬´úÂë¿éÖ»Ö´ÐÐÒ»´Î¡£¹¹Ôì´úÂë¿éÔÚÿ´Î´´½¨¶ÔÏóÊǶ¼»áÖ´ÐС£

¾²Ì¬´úÂë¿éµÄ×÷Ó㺱ÈÈçÎÒÃÇÔÚµ÷ÓÃCÓïÑԵĶ¯Ì¬¿âʱ»á¿É°Ñ.soÎļþ·ÅÔÚ´Ë´¦¡£

¹¹Ôì´úÂë¿éµÄ¹¦ÄÜ£º£¨¿ÉÒ԰Ѳ»Í¬¹¹Ôì·½·¨ÖÐÏàͬµÄ¹²ÐԵĶ«Î÷дÔÚËüÀïÃæ£©¡£ÀýÈ磺±ÈÈç²»ÂÛÈκλúÐ͵ĵçÄÔ¶¼Óпª»úÕâ¸ö¹¦ÄÜ£¬´ËʱÎÒÃǾͿÉÒÔ°ÑÕâ¸ö¹¦Äܶ¨ÒåÔÚ¹¹Ôì´úÂë¿éÄÚ¡£

Person p = new Person();

´´½¨Ò»¸ö¶ÔÏó¶¼ÔÚÄÚ´æÖÐ×öÁËʲôÊÂÇ飿

1£ºÏȽ«Ó²ÅÌÉÏÖ¸¶¨Î»ÖõÄPerson.classÎļþ¼ÓÔØ½øÄÚ´æ¡£

2£ºÖ´ÐÐmain·½·¨Ê±£¬ÔÚÕ»ÄÚ´æÖпª±ÙÁËmain·½·¨µÄ¿Õ¼ä(ѹջ-½øÕ»)£¬È»ºóÔÚmain·½·¨µÄÕ»Çø·ÖÅäÁËÒ»¸ö±äÁ¿p¡£

3£ºÔÚ¶ÑÄÚ´æÖпª±ÙÒ»¸öʵÌå¿Õ¼ä£¬·ÖÅäÁËÒ»¸öÄÚ´æÊ×µØÖ·Öµ¡£new

4£ºÔÚ¸ÃʵÌå¿Õ¼äÖнøÐÐÊôÐԵĿռä·ÖÅ䣬²¢½øÐÐÁËĬÈϳõʼ»¯¡£

5£º¶Ô¿Õ¼äÖеÄÊôÐÔ½øÐÐÏÔʾ³õʼ»¯¡£

6£º½øÐÐʵÌåµÄ¹¹Ôì´úÂë¿é³õʼ»¯¡£

7£ºµ÷ÓøÃʵÌå¶ÔÓ¦µÄ¹¹Ô캯Êý£¬½øÐй¹Ô캯Êý³õʼ»¯¡££¨£©

8£º½«Ê×µØÖ·¸³Öµ¸øp £¬p±äÁ¿¾ÍÒýÓÃÁ˸ÃʵÌå¡£(Ö¸ÏòÁ˸öÔÏó)

·â ×°£¨ÃæÏò¶ÔÏóÌØÕ÷Ö®Ò»£©£ºÊÇÖ¸Òþ²Ø¶ÔÏóµÄÊôÐÔºÍʵÏÖϸ½Ú£¬½ö¶ÔÍâÌṩ¹«¹²·ÃÎÊ·½Ê½¡£

ºÃ´¦£º½«±ä»¯¸ôÀ룻±ãÓÚʹÓã»Ìá¸ßÖØÓÃÐÔ£»°²È«ÐÔ¡£

·â×°Ô­Ôò£º½«²»ÐèÒª¶ÔÍâÌṩµÄÄÚÈݶ¼Òþ²ØÆðÀ´£¬°ÑÊôÐÔ¶¼Òþ²Ø£¬Ìṩ¹«¹²·½·¨¶ÔÆä·ÃÎÊ¡£

this:´ú±í¶ÔÏó¡£¾ÍÊÇËùÔÚº¯ÊýËùÊô¶ÔÏóµÄÒýÓá£

thisµ½µ×´ú±íÊ²Ã´ÄØ£¿Äĸö¶ÔÏóµ÷ÓÃÁËthisËùÔڵĺ¯Êý£¬this¾Í´ú±íÄĸö¶ÔÏ󣬾ÍÊÇÄĸö¶ÔÏóµÄÒýÓá£

¿ª·¢Ê±£¬Ê²Ã´Ê±ºòʹÓÃthisÄØ£¿

ÔÚ¶¨Ò幦ÄÜʱ£¬Èç¹û¸Ã¹¦ÄÜÄÚ²¿Ê¹Óõ½Á˵÷Óøù¦ÄܵĶÔÏó£¬Õâʱ¾ÍÓÃthisÀ´±íʾÕâ¸ö¶ÔÏó¡£

this »¹¿ÉÒÔÓÃÓÚ¹¹Ô캯Êý¼äµÄµ÷Óá£

µ÷Óøñʽ£ºthis(ʵ¼Ê²ÎÊý)£»

this¶ÔÏóºóÃæ¸úÉÏ . µ÷ÓõÄÊdzÉÔ±ÊôÐԺͳÉÔ±·½·¨(Ò»°ã·½·¨)£»

this¶ÔÏóºóÃæ¸úÉÏ () µ÷ÓõÄÊDZ¾ÀàÖеĶÔÓ¦²ÎÊýµÄ¹¹Ô캯Êý¡£

×¢Ò⣺ÓÃthisµ÷Óù¹Ô캯Êý£¬±ØÐ붨ÒåÔÚ¹¹Ô캯ÊýµÄµÚÒ»ÐС£ÒòΪ¹¹Ô캯ÊýÊÇÓÃÓÚ³õʼ»¯µÄ£¬ËùÒÔ³õʼ»¯¶¯×÷Ò»¶¨ÒªÖ´ÐС£·ñÔò±àÒëʧ°Ü¡£

static£º¡ï¡ï¡ï ¹Ø¼ü×Ö£¬ÊÇÒ»¸öÐÞÊηû£¬ÓÃÓÚÐÞÊγÉÔ±(³ÉÔ±±äÁ¿ºÍ³ÉÔ±º¯Êý)¡£

ÌØµã£º

1¡¢static±äÁ¿

¡¡°´ÕÕÊÇ·ñ¾²Ì¬µÄ¶ÔÀà³ÉÔ±±äÁ¿½øÐзÖÀà¿É·ÖÁ½ÖÖ£ºÒ»ÖÖÊDZ»staticÐÞÊεıäÁ¿£¬½Ð¾²Ì¬±äÁ¿»òÀà±äÁ¿£»ÁíÒ»ÖÖÊÇûÓб»staticÐÞÊεıäÁ¿£¬½ÐʵÀý±äÁ¿¡£Á½ÕßµÄÇø±ðÊÇ£º

¡¡¶ÔÓÚ¾²Ì¬±äÁ¿ÔÚÄÚ´æÖÐÖ»ÓÐÒ»¸ö¿½±´£¨½ÚÊ¡Äڴ棩£¬JVMֻΪ¾²Ì¬·ÖÅäÒ»´ÎÄڴ棬ÔÚ¼ÓÔØÀàµÄ¹ý³ÌÖÐÍê³É¾²Ì¬±äÁ¿µÄÄÚ´æ·ÖÅ䣬¿ÉÓÃÀàÃûÖ±½Ó·ÃÎÊ£¨·½±ã£©£¬µ±È»Ò²¿ÉÒÔͨ¹ý¶ÔÏóÀ´·ÃÎÊ£¨µ«ÊÇÕâÊDz»ÍƼöµÄ£©¡£

¡¡¶ÔÓÚʵÀý±äÁ¿£¬Ã»´´½¨Ò»¸öʵÀý£¬¾Í»áΪʵÀý±äÁ¿·ÖÅäÒ»´ÎÄڴ棬ʵÀý±äÁ¿¿ÉÒÔÔÚÄÚ´æÖÐÓжà¸ö¿½±´£¬»¥²»Ó°Ï죨Áé»î£©¡£

2¡¢¾²Ì¬·½·¨

¡¡¾²Ì¬·½·¨¿ÉÒÔÖ±½Óͨ¹ýÀàÃûµ÷Óã¬ÈκεÄʵÀýÒ²¶¼¿ÉÒÔµ÷Óã¬Òò´Ë¾²Ì¬·½·¨Öв»ÄÜÓÃthisºÍsuper¹Ø¼ü×Ö£¬²»ÄÜÖ±½Ó·ÃÎÊËùÊôÀàµÄʵÀý±äÁ¿ºÍʵÀý·½·¨(¾ÍÊDz»´østaticµÄ³ÉÔ±±äÁ¿ºÍ³ÉÔ±³ÉÔ±·½·¨)£¬Ö»ÄÜ·ÃÎÊËùÊôÀàµÄ¾²Ì¬³ÉÔ±±äÁ¿ºÍ³ÉÔ±·½·¨¡£ÒòΪʵÀý³ÉÔ±ÓëÌØ¶¨µÄ¶ÔÏó¹ØÁª£¡Õâ¸öÐèҪȥÀí½â£¬ÏëÃ÷°×ÆäÖеĵÀÀí£¬²»ÊǼÇÒ䣡£¡£¡

¡¡ÒòΪstatic·½·¨¶ÀÁ¢ÓÚÈκÎʵÀý£¬Òò´Ëstatic·½·¨±ØÐ뱻ʵÏÖ£¬¶ø²»ÄÜÊdzéÏóµÄabstract¡£

3¡¢static´úÂë¿é

¡¡static´úÂë¿éÒ²½Ð¾²Ì¬´úÂë¿é£¬ÊÇÔÚÀàÖжÀÁ¢ÓÚÀà³ÉÔ±µÄstaticÓï¾ä¿é£¬¿ÉÒÔÓжà¸ö£¬Î»ÖÿÉÒÔËæ±ã·Å£¬Ëü²»ÔÚÈκεķ½·¨ÌåÄÚ£¬JVM¼ÓÔØÀàʱ»áÖ´ÐÐÕâЩ¾²Ì¬µÄ´úÂë¿é£¬Èç¹ûstatic´úÂë¿éÓжà¸ö£¬JVM½«°´ÕÕËüÃÇÔÚÀàÖгöÏÖµÄÏȺó˳ÐòÒÀ´ÎÖ´ÐÐËüÃÇ£¬Ã¿¸ö´úÂë¿éÖ»»á±»Ö´ÐÐÒ»´Î¡£

4¡¢staticºÍfinalÒ»¿éÓñíʾʲô

static finalÓÃÀ´ÐÞÊγÉÔ±±äÁ¿ºÍ³ÉÔ±·½·¨£¬¿É¼òµ¥Àí½âΪ"È«¾Ö³£Á¿"£¡

¶ÔÓÚ±äÁ¿£¬±íʾһµ©¸øÖµ¾Í²»¿ÉÐ޸쬲¢ÇÒͨ¹ýÀàÃû¿ÉÒÔ·ÃÎÊ¡£

¶ÔÓÚ·½·¨£¬±íʾ²»¿É¸²¸Ç£¬²¢ÇÒ¿ÉÒÔͨ¹ýÀàÃûÖ±½Ó·ÃÎÊ¡£

±¸×¢£º

1£¬ÓÐЩÊý¾ÝÊǶÔÏóÌØÓеÄÊý¾Ý£¬ÊDz»¿ÉÒÔ±»¾²Ì¬ÐÞÊεġ£ÒòΪÄÇÑùµÄ»°£¬ÌØÓÐÊý¾Ý»á±ä³É¶ÔÏóµÄ¹²ÏíÊý¾Ý¡£ÕâÑù¶ÔÊÂÎïµÄÃèÊö¾Í³öÁËÎÊÌâ¡£ËùÒÔ£¬ÔÚ¶¨Ò徲̬ʱ£¬±ØÐëÒªÃ÷È·£¬Õâ¸öÊý¾ÝÊÇ·ñÊDZ»¶ÔÏóËù¹²ÏíµÄ¡£

2£¬¾²Ì¬·½·¨Ö»ÄÜ·ÃÎʾ²Ì¬³ÉÔ±£¬²»¿ÉÒÔ·ÃÎʷǾ²Ì¬³ÉÔ±¡£

(Õâ¾ä»°ÊÇÕë¶Ôͬһ¸öÀà»·¾³Ïµģ¬±ÈÈç˵£¬Ò»¸öÀàÓжà¸ö³ÉÔ±£¨ÊôÐÔ£¬·½·¨£¬×ֶΣ©£¬¾²Ì¬·½·¨A£¬ÄÇô¿ÉÒÔ·ÃÎÊͬÀàÃûÏÂÆäËû¾²Ì¬³ÉÔ±£¬ÄãÈç¹û·ÃÎʷǾ²Ì¬³ÉÔ±¾Í²»ÐÐ)

ÒòΪ¾²Ì¬·½·¨¼ÓÔØÊ±£¬ÓÅÏÈÓÚ¶ÔÏó´æÔÚ£¬ËùÒÔûÓа취·ÃÎʶÔÏóÖеijÉÔ±¡£

3£¬¾²Ì¬·½·¨Öв»ÄÜʹÓÃthis£¬super¹Ø¼ü×Ö¡£

ÒòΪthis´ú±í¶ÔÏ󣬶ø¾²Ì¬ÔÚʱ£¬ÓпÉÄÜûÓжÔÏó£¬ËùÒÔthisÎÞ·¨Ê¹Óá£

4£¬Ö÷º¯ÊýÊǾ²Ì¬µÄ¡£

³ÉÔ±±äÁ¿ºÍ¾²Ì¬±äÁ¿µÄÇø±ð£º

1£¬³ÉÔ±±äÁ¿ËùÊôÓÚ¶ÔÏó¡£ËùÒÔÒ²³ÆÎªÊµÀý±äÁ¿¡£

¾²Ì¬±äÁ¿ËùÊôÓÚÀà¡£ËùÒÔÒ²³ÆÎªÀà±äÁ¿¡£

2£¬³ÉÔ±±äÁ¿´æÔÚÓÚ¶ÑÄÚ´æÖС£

¾²Ì¬±äÁ¿´æÔÚÓÚ·½·¨ÇøÖС£

3£¬³ÉÔ±±äÁ¿Ëæ×ŶÔÏó´´½¨¶ø´æÔÚ¡£Ëæ×ŶÔÏó±»»ØÊÕ¶øÏûʧ¡£

¾²Ì¬±äÁ¿Ëæ×ÅÀàµÄ¼ÓÔØ¶ø´æÔÚ¡£Ëæ×ÅÀàµÄÏûʧ¶øÏûʧ¡£

4£¬³ÉÔ±±äÁ¿Ö»Äܱ»¶ÔÏóËùµ÷Óà ¡£

¾²Ì¬±äÁ¿¿ÉÒÔ±»¶ÔÏóµ÷Óã¬Ò²¿ÉÒÔ±»ÀàÃûµ÷Óá£

ËùÒÔ£¬³ÉÔ±±äÁ¿¿ÉÒÔ³ÆÎª¶ÔÏóµÄÌØÓÐÊý¾Ý£¬¾²Ì¬±äÁ¿³ÆÎª¶ÔÏóµÄ¹²ÏíÊý¾Ý¡£

¾²Ì¬´úÂë¿é£º¾ÍÊÇÒ»¸öÓо²Ì¬¹Ø¼ü×Ö±êʾµÄÒ»¸ö´úÂë¿éÇøÓò¡£¶¨ÒåÔÚÀàÖС£

×÷Ó㺿ÉÒÔÍê³ÉÀàµÄ³õʼ»¯¡£¾²Ì¬´úÂë¿éËæ×ÅÀàµÄ¼ÓÔØ¶øÖ´ÐУ¬¶øÇÒÖ»Ö´ÐÐÒ»´Î£¨new ¶à¸ö¶ÔÏó¾ÍÖ»Ö´ÐÐÒ»´Î£©¡£Èç¹ûºÍÖ÷º¯ÊýÔÚͬһÀàÖУ¬ÓÅÏÈÓÚÖ÷º¯ÊýÖ´ÐС£

final

¸ù¾Ý³ÌÐòÉÏÏÂÎÄ»·¾³£¬Java¹Ø¼ü×ÖfinalÓÐ"ÕâÊÇÎÞ·¨¸Ä±äµÄ"»òÕß"ÖÕ̬µÄ"º¬Ò壬Ëü¿ÉÒÔÐÞÊηdzéÏóÀà¡¢·Ç³éÏóÀà³ÉÔ±·½·¨ºÍ±äÁ¿¡£Äã¿ÉÄܳöÓÚÁ½ÖÖÀí½â¶øÐèÒª×èÖ¹¸Ä±ä¡¢Éè¼Æ»òЧÂÊ¡£

finalÀ಻Äܱ»¼Ì³Ð£¬Ã»ÓÐ×ÓÀ࣬finalÀàÖеķ½·¨Ä¬ÈÏÊÇfinalµÄ¡£

final·½·¨²»Äܱ»×ÓÀàµÄ·½·¨¸²¸Ç£¬µ«¿ÉÒÔ±»¼Ì³Ð¡£

final³ÉÔ±±äÁ¿±íʾ³£Á¿£¬Ö»Äܱ»¸³ÖµÒ»´Î£¬¸³ÖµºóÖµ²»Ôٸı䡣

final²»ÄÜÓÃÓÚÐÞÊι¹Ôì·½·¨¡£

×¢Ò⣺¸¸ÀàµÄprivate³ÉÔ±·½·¨ÊDz»Äܱ»×ÓÀà·½·¨¸²¸ÇµÄ£¬Òò´ËprivateÀàÐ͵ķ½·¨Ä¬ÈÏÊÇfinalÀàÐ͵ġ£

1¡¢finalÀà

finalÀ಻Äܱ»¼Ì³Ð£¬Òò´ËfinalÀàµÄ³ÉÔ±·½·¨Ã»Óлú»á±»¸²¸Ç£¬Ä¬È϶¼ÊÇfinalµÄ¡£ÔÚÉè¼ÆÀàʱºò£¬Èç¹ûÕâ¸öÀ಻ÐèÒªÓÐ×ÓÀ࣬ÀàµÄʵÏÖϸ½Ú²»ÔÊÐí¸Ä±ä£¬²¢ÇÒÈ·ÐÅÕâ¸öÀ಻»áÔØ±»À©Õ¹£¬ÄÇô¾ÍÉè¼ÆÎªfinalÀà¡£

2¡¢final·½·¨

Èç¹ûÒ»¸öÀ಻ÔÊÐíÆä×ÓÀา¸Çij¸ö·½·¨£¬Ôò¿ÉÒÔ°ÑÕâ¸ö·½·¨ÉùÃ÷Ϊfinal·½·¨¡£

ʹÓÃfinal·½·¨µÄÔ­ÒòÓжþ£º

µÚÒ»¡¢°Ñ·½·¨Ëø¶¨£¬·ÀÖ¹Èκμ̳ÐÀàÐÞ¸ÄËüµÄÒâÒåºÍʵÏÖ¡£

µÚ¶þ¡¢¸ßЧ¡£±àÒëÆ÷ÔÚÓöµ½µ÷ÓÃfinal·½·¨Ê±ºò»áתÈëÄÚǶ»úÖÆ£¬´ó´óÌá¸ßÖ´ÐÐЧÂÊ¡£

3¡¢final±äÁ¿£¨³£Á¿£©

¡¡ÓÃfinalÐÞÊεijÉÔ±±äÁ¿±íʾ³£Á¿£¬ÖµÒ»µ©¸ø¶¨¾ÍÎÞ·¨¸Ä±ä£¡

¡¡finalÐÞÊεıäÁ¿ÓÐÈýÖÖ£º¾²Ì¬±äÁ¿¡¢ÊµÀý±äÁ¿ºÍ¾Ö²¿±äÁ¿£¬·Ö±ð±íʾÈýÖÖÀàÐ͵ij£Á¿¡£

¡¡´ÓÏÂÃæµÄÀý×ÓÖпÉÒÔ¿´³ö£¬Ò»µ©¸øfinal±äÁ¿³õÖµºó£¬Öµ¾Í²»ÄÜÔٸıäÁË¡£

¡¡ÁíÍ⣬final±äÁ¿¶¨ÒåµÄʱºò£¬¿ÉÒÔÏÈÉùÃ÷£¬¶ø²»¸ø³õÖµ£¬ÕâÖбäÁ¿Ò²³ÆÎªfinal¿Õ°×£¬ÎÞÂÛʲôÇé¿ö£¬±àÒëÆ÷¶¼È·±£¿Õ°×finalÔÚʹÓÃ֮ǰ±ØÐë±»³õʼ»¯¡£µ«ÊÇ£¬final¿Õ°×ÔÚfinal¹Ø¼ü×ÖfinalµÄʹÓÃÉÏÌṩÁ˸ü´óµÄÁé»îÐÔ£¬Îª´Ë£¬Ò»¸öÀàÖеÄfinalÊý¾Ý³ÉÔ±¾Í¿ÉÒÔʵÏÖÒÀ¶ÔÏó¶øÓÐËù²»Í¬£¬È´Óб£³ÖÆäºã¶¨²»±äµÄÌØÕ÷¡£

4¡¢final²ÎÊý

µ±º¯Êý²ÎÊýΪfinalÀàÐÍʱ£¬Äã¿ÉÒÔ¶ÁȡʹÓøòÎÊý£¬µ«ÊÇÎÞ·¨¸Ä±ä¸Ã²ÎÊýµÄÖµ¡£

Éú³ÉJava°ïÖúÎĵµ£º

ÃüÁî¸ñʽ£ºjavadoc ¨Cd Îļþ¼ÐÃû ¨Cauther ¨Cversion *.java
/** //¸ñʽ
*ÀàÃèÊö
*@author ×÷ÕßÃû
*@version °æ±¾ºÅ
*/
/**
*·½·¨ÃèÊö
*@param ²ÎÊýÃèÊö
*@return ·µ»ØÖµÃèÊö
*/

¼Ì ³Ð£¨ÃæÏò¶ÔÏóÌØÕ÷Ö®Ò»£©

javaÖжÔÓڼ̳У¬javaÖ»Ö§³Öµ¥¼Ì³Ð¡£javaËäÈ»²»Ö±½ÓÖ§³Ö¶à¼Ì³Ð£¬µ«ÊÇ¿ÉʵÏÖ¶à½Ó¿Ú¡£

1£º³ÉÔ±±äÁ¿¡£

µ±×Ó¸¸ÀàÖгöÏÖÒ»ÑùµÄÊôÐÔʱ£¬×ÓÀàÀàÐ͵ĶÔÏ󣬵÷ÓøÃÊôÐÔ£¬ÖµÊÇ×ÓÀàµÄÊôÐÔÖµ¡£

Èç¹ûÏëÒªµ÷Óø¸ÀàÖеÄÊôÐÔÖµ£¬ÐèҪʹÓÃÒ»¸ö¹Ø¼ü×Ö£ºsuper

This£º´ú±íÊDZ¾ÀàÀàÐ͵ĶÔÏóÒýÓá£

Super£º´ú±íÊÇ×ÓÀàËùÊôµÄ¸¸ÀàÖеÄÄÚ´æ¿Õ¼äÒýÓá£

×¢Ò⣺×Ó¸¸ÀàÖÐͨ³£ÊDz»»á³öÏÖͬÃû³ÉÔ±±äÁ¿µÄ£¬ÒòΪ¸¸ÀàÖÐÖ»Òª¶¨ÒåÁË£¬×ÓÀà¾Í²»ÓÃÔÚ¶¨ÒåÁË£¬Ö±½Ó¼Ì³Ð¹ýÀ´ÓþͿÉÒÔÁË¡£

2£º³ÉÔ±º¯Êý¡£

µ±×Ó¸¸ÀàÖгöÏÖÁËһģһÑùµÄ·½·¨Ê±£¬½¨Á¢×ÓÀà¶ÔÏó»áÔËÐÐ×ÓÀàÖеķ½·¨¡£ºÃÏñ¸¸ÀàÖеķ½·¨±»¸²¸ÇµôÒ»Ñù¡£ËùÒÔÕâÖÖÇé¿ö£¬ÊǺ¯ÊýµÄÁíÒ»¸öÌØÐÔ£ºÖØÐ´

3£º¹¹Ô캯Êý¡£

·¢ÏÖ×ÓÀ๹Ô캯ÊýÔËÐÐʱ£¬ÏÈÔËÐÐÁ˸¸ÀàµÄ¹¹Ô캯Êý¡£ÎªÊ²Ã´ÄØ?

Ô­Òò£º×ÓÀàµÄËùÓй¹Ô캯ÊýÖеĵÚÒ»ÐУ¬Æäʵ¶¼ÓÐÒ»ÌõÒþÉíµÄÓï¾äsuper();

super(): ±íʾ¸¸ÀàµÄ¹¹Ô캯Êý£¬²¢»áµ÷ÓÃÓÚ²ÎÊýÏà¶ÔÓ¦µÄ¸¸ÀàÖеĹ¹Ô캯Êý¡£¶øsuper():ÊÇÔÚµ÷Óø¸ÀàÖпղÎÊýµÄ¹¹Ô캯Êý¡£

Ϊʲô×ÓÀà¶ÔÏó³õʼ»¯Ê±£¬¶¼ÐèÒªµ÷Óø¸ÀàÖеĺ¯Êý£¿(ΪʲôҪÔÚ×ÓÀ๹Ô캯ÊýµÄµÚÒ»ÐмÓÈëÕâ¸ösuper()?)

ÒòΪ×ÓÀà¼Ì³Ð¸¸À࣬»á¼Ì³Ðµ½¸¸ÀàÖеÄÊý¾Ý£¬ËùÒÔ±ØÐëÒª¿´¸¸ÀàÊÇÈçºÎ¶Ô×Ô¼ºµÄÊý¾Ý½øÐгõʼ»¯µÄ¡£ËùÒÔ×ÓÀàÔÚ½øÐжÔÏó³õʼ»¯Ê±£¬Ïȵ÷Óø¸ÀàµÄ¹¹Ô캯Êý£¬Õâ¾ÍÊÇ×ÓÀàµÄʵÀý»¯¹ý³Ì¡£

×¢Ò⣺×ÓÀàÖÐËùÓеĹ¹Ô캯Êý¶¼»áĬÈÏ·ÃÎʸ¸ÀàÖеĿղÎÊýµÄ¹¹Ô캯Êý£¬ÒòΪÿһ¸ö×ÓÀ๹ÔìÄÚµÚÒ»Ðж¼ÓÐĬÈϵÄÓï¾äsuper();

Èç¹û¸¸ÀàÖÐûÓпղÎÊýµÄ¹¹Ô캯Êý£¬ÄÇô×ÓÀàµÄ¹¹Ô캯ÊýÄÚ£¬±ØÐëͨ¹ýsuperÓï¾äÖ¸¶¨Òª·ÃÎʵĸ¸ÀàÖеĹ¹Ô캯Êý¡£

Èç¹û×ÓÀ๹Ô캯ÊýÖÐÓÃthisÀ´Ö¸¶¨µ÷ÓÃ×ÓÀà×Ô¼ºµÄ¹¹Ô캯Êý£¬ÄÇô±»µ÷ÓõĹ¹Ô캯ÊýÒ²Ò»Ñù»á·ÃÎʸ¸ÀàÖеĹ¹Ô캯Êý¡£

ÎÊÌ⣺

super()ºÍthis()ÊÇ·ñ¿ÉÒÔͬʱ³öÏֵĹ¹Ô캯ÊýÖУ¿

Á½¸öÓï¾äÖ»ÄÜÓÐÒ»¸ö¶¨ÒåÔÚµÚÒ»ÐУ¬ËùÒÔÖ»ÄܳöÏÖÆäÖÐÒ»¸ö¡£

super()»òÕßthis():Ϊʲôһ¶¨Òª¶¨ÒåÔÚµÚÒ»ÐУ¿

ÒòΪsuper()»òÕßthis()¶¼Êǵ÷Óù¹Ô캯Êý£¬¹¹Ô캯ÊýÓÃÓÚ³õʼ»¯£¬ËùÒÔ³õʼ»¯µÄ¶¯×÷ÒªÏÈÍê³É¡£

ÔÚ·½·¨¸²¸Çʱ£¬×¢ÒâÁ½µã£º

1£º×ÓÀา¸Ç¸¸Ààʱ£¬±ØÐëÒª±£Ö¤£¬×ÓÀà·½·¨µÄȨÏÞ±ØÐë´óÓÚµÈÓÚ¸¸Àà·½·¨È¨ÏÞ¿ÉÒÔʵÏּ̳С£·ñÔò£¬±àÒëʧ°Ü¡££¨¾Ù¸öÀý×Ó£¬ÔÚ¸¸ÀàÖÐÊÇpublicµÄ·½·¨£¬Èç¹û×ÓÀàÖн«Æä½µµÍ·ÃÎÊȨÏÞΪprivate£¬ÄÇô×ÓÀàÖÐÖØÐ´ÒÔºóµÄ·½·¨¶ÔÓÚÍⲿ¶ÔÏó¾Í²»¿É·ÃÎÊÁË£¬Õâ¸ö¾ÍÆÆ»µÁ˼̳еĺ¬Ò壩

2£º¸²¸Çʱ£¬ÒªÃ´¶¼¾²Ì¬£¬ÒªÃ´¶¼²»¾²Ì¬¡£ (¾²Ì¬Ö»Äܸ²¸Ç¾²Ì¬£¬»òÕß±»¾²Ì¬¸²¸Ç)

¼Ì³ÐµÄÒ»¸ö±×¶Ë£º´òÆÆÁË·â×°ÐÔ¡£¶ÔÓÚһЩÀ࣬»òÕßÀàÖй¦ÄÜ£¬ÊÇÐèÒª±»¼Ì³Ð£¬»òÕ߸´Ð´µÄ¡£

ÕâʱÈçºÎ½â¾öÎÊÌâÄØ£¿½éÉÜÒ»¸ö¹Ø¼ü×Ö£¬final¡£

finalÌØµã£º£¨Ïêϸ½âÊͼûÇ°Ãæ£©

1£ºÕâ¸ö¹Ø¼ü×ÖÊÇÒ»¸öÐÞÊηû£¬¿ÉÒÔÐÞÊÎÀ࣬·½·¨£¬±äÁ¿¡£

2£º±»finalÐÞÊεÄÀàÊÇÒ»¸ö×îÖÕÀ࣬²»¿ÉÒÔ±»¼Ì³Ð¡£

3£º±»finalÐÞÊεķ½·¨ÊÇÒ»¸ö×îÖÕ·½·¨£¬²»¿ÉÒÔ±»¸²¸Ç¡£

4£º±»finalÐÞÊεıäÁ¿ÊÇÒ»¸ö³£Á¿£¬Ö»Äܸ³ÖµÒ»´Î¡£

³éÏóÀà: abstract

³éÏóÀàµÄÌØµã£º

1£º³éÏó·½·¨Ö»Äܶ¨ÒåÔÚ³éÏóÀàÖУ¬³éÏóÀàºÍ³éÏó·½·¨±ØÐëÓÉabstract¹Ø¼ü×ÖÐÞÊΣ¨¿ÉÒÔÃèÊöÀàºÍ·½·¨£¬²»¿ÉÒÔÃèÊö±äÁ¿£©¡£

2£º³éÏó·½·¨Ö»¶¨Òå·½·¨ÉùÃ÷£¬²¢²»¶¨Òå·½·¨ÊµÏÖ¡£

3£º³éÏóÀ಻¿ÉÒÔ±»´´½¨¶ÔÏó(ʵÀý»¯)¡£

4£ºÖ»ÓÐͨ¹ý×ÓÀà¼Ì³Ð³éÏóÀಢ¸²¸ÇÁ˳éÏóÀàÖеÄËùÓгéÏó·½·¨ºó£¬¸Ã×ÓÀà²Å¿ÉÒÔʵÀý»¯¡£·ñÔò£¬¸Ã×ÓÀ໹ÊÇÒ»¸ö³éÏóÀà¡£

³éÏóÀàµÄϸ½Ú£º

1£º³éÏóÀàÖÐÊÇ·ñÓй¹Ô캯Êý£¿ÓУ¬ÓÃÓÚ¸ø×ÓÀà¶ÔÏó½øÐгõʼ»¯¡£

2£º³éÏóÀàÖÐÊÇ·ñ¿ÉÒÔ¶¨Òå·Ç³éÏó·½·¨£¿

¿ÉÒÔ¡£Æäʵ£¬³éÏóÀàºÍÒ»°ãÀàûÓÐÌ«´óµÄÇø±ð£¬¶¼ÊÇÔÚÃèÊöÊÂÎֻ²»¹ý³éÏóÀàÔÚÃèÊöÊÂÎïʱ£¬ÓÐЩ¹¦Äܲ»¾ßÌå¡£ËùÒÔ³éÏóÀàºÍÒ»°ãÀàÔÚ¶¨ÒåÉÏ£¬¶¼ÊÇÐèÒª¶¨ÒåÊôÐÔºÍÐÐΪµÄ¡£Ö»²»¹ý£¬±ÈÒ»°ãÀà¶àÁËÒ»¸ö³éÏóº¯Êý¡£¶øÇÒ±ÈÒ»°ãÀàÉÙÁËÒ»¸ö´´½¨¶ÔÏóµÄ²¿·Ö¡£

3£º³éÏ󹨼ü×ÖabstractºÍÄÄЩ²»¿ÉÒÔ¹²´æ£¿final , private , static

4£º³éÏóÀàÖпɲ»¿ÉÒÔ²»¶¨Òå³éÏó·½·¨£¿¿ÉÒÔ¡£³éÏó·½·¨Ä¿µÄ½ö½öΪÁ˲»ÈøÃÀà´´½¨¶ÔÏó¡£

½Ó ¿Ú£º¡ï¡ï¡ï¡ï¡ï

1£ºÊÇÓùؼü×Öinterface¶¨ÒåµÄ¡£

2£º½Ó¿ÚÖаüº¬µÄ³ÉÔ±£¬×î³£¼ûµÄÓÐÈ«¾Ö³£Á¿¡¢³éÏó·½·¨¡£

×¢Ò⣺½Ó¿ÚÖеijÉÔ±¶¼Óй̶¨µÄÐÞÊηû¡£

³ÉÔ±±äÁ¿£ºpublic static final

³ÉÔ±·½·¨£ºpublic abstract

interface Inter{
public static final int x = 3;
public abstract void show();
}

3£º½Ó¿ÚÖÐÓгéÏó·½·¨£¬ËµÃ÷½Ó¿Ú²»¿ÉÒÔʵÀý»¯¡£½Ó¿ÚµÄ×ÓÀà±ØÐëʵÏÖÁ˽ӿÚÖÐËùÓеijéÏó·½·¨ºó£¬¸Ã×ÓÀà²Å¿ÉÒÔʵÀý»¯¡£·ñÔò£¬¸Ã×ÓÀ໹ÊÇÒ»¸ö³éÏóÀà¡£

4£ºÀàÓëÀàÖ®¼ä´æÔÚ׿̳йØÏµ£¬ÀàÓë½Ó¿ÚÖÐ¼ä´æÔÚµÄÊÇʵÏÖ¹ØÏµ¡£

¼Ì³ÐÓÃextends £»ÊµÏÖÓÃimplements £»

5£º½Ó¿ÚºÍÀ಻һÑùµÄµØ·½£¬¾ÍÊÇ£¬½Ó¿Ú¿ÉÒÔ±»¶àʵÏÖ£¬Õâ¾ÍÊǶà¼Ì³Ð¸ÄÁ¼ºóµÄ½á¹û¡£java½«¶à¼Ì³Ð»úÖÆÍ¨¹ý¶àÏÖʵÀ´ÌåÏÖ¡£

6£ºÒ»¸öÀàÔڼ̳ÐÁíÒ»¸öÀàµÄͬʱ£¬»¹¿ÉÒÔʵÏÖ¶à¸ö½Ó¿Ú¡£ËùÒԽӿڵijöÏÖ±ÜÃâÁ˵¥¼Ì³ÐµÄ¾ÖÏÞÐÔ¡£»¹¿ÉÒÔ½«Àà½øÐй¦ÄܵÄÀ©Õ¹¡£

7£ºÆäʵjavaÖÐÊÇÓжà¼Ì³ÐµÄ¡£½Ó¿ÚÓë½Ó¿ÚÖ®¼ä´æÔÚ׿̳йØÏµ£¬½Ó¿Ú¿ÉÒÔ¶à¼Ì³Ð½Ó¿Ú¡£

javaÀàÊǵ¥¼Ì³ÐµÄ¡£classB Extends classA

java½Ó¿Ú¿ÉÒÔ¶à¼Ì³Ð¡£Interface3 Extends Interface0, Interface1, interface¡­¡­

²»ÔÊÐíÀà¶àÖØ¼Ì³ÐµÄÖ÷ÒªÔ­ÒòÊÇ£¬Èç¹ûAͬʱ¼Ì³ÐBºÍC£¬¶øbºÍcͬʱÓÐÒ»¸öD·½·¨£¬AÈçºÎ¾ö¶¨¸Ã¼Ì³ÐÄÇÒ»¸öÄØ£¿

µ«½Ó¿Ú²»´æÔÚÕâÑùµÄÎÊÌ⣬½Ó¿ÚÈ«¶¼ÊdzéÏó·½·¨¼Ì³ÐË­¶¼ÎÞËùν£¬ËùÒÔ½Ó¿Ú¿ÉÒԼ̳жà¸ö½Ó¿Ú¡£

³éÏóÀàÓë½Ó¿Ú£º

³éÏóÀࣺһ°ãÓÃÓÚÃèÊöÒ»¸öÌåϵµ¥Ôª£¬½«Ò»×é¹²ÐÔÄÚÈݽøÐгéÈ¡£¬Ìص㣺¿ÉÒÔÔÚÀàÖж¨Òå³éÏóÄÚÈÝÈÃ×ÓÀàʵÏÖ£¬¿ÉÒÔ¶¨Òå·Ç³éÏóÄÚÈÝÈÃ×ÓÀàÖ±½ÓʹÓá£ËüÀïÃæ¶¨ÒåµÄ¶¼ÊÇһЩÌåϵÖеĻù±¾ÄÚÈÝ¡£

½Ó¿Ú£ºÒ»°ãÓÃÓÚ¶¨Òå¶ÔÏóµÄÀ©Õ¹¹¦ÄÜ£¬ÊÇÔڼ̳ÐÖ®Í⻹ÐèÕâ¸ö¶ÔÏó¾ß±¸µÄһЩ¹¦ÄÜ¡£

³éÏóÀàºÍ½Ó¿ÚµÄ¹²ÐÔ£º¶¼ÊDz»¶ÏÏòÉϳéÈ¡µÄ½á¹û¡£

³éÏóÀàºÍ½Ó¿ÚµÄÇø±ð£º

1£º³éÏóÀàÖ»Äܱ»¼Ì³Ð£¬¶øÇÒÖ»Äܵ¥¼Ì³Ð¡£

½Ó¿ÚÐèÒª±»ÊµÏÖ£¬¶øÇÒ¿ÉÒÔ¶àʵÏÖ¡£

2£º³éÏóÀàÖпÉÒÔ¶¨Òå·Ç³éÏó·½·¨£¬×ÓÀà¿ÉÒÔÖ±½Ó¼Ì³ÐʹÓá£

½Ó¿ÚÖж¼ÊdzéÏó·½·¨£¬ÐèÒª×ÓÀàȥʵÏÖ¡£

3£º³éÏóÀàʹÓõÄÊÇ is a ¹ØÏµ¡£

½Ó¿ÚʹÓÃµÄ like a ¹ØÏµ¡£

4£º³éÏóÀàµÄ³ÉÔ±ÐÞÊηû¿ÉÒÔ×Ô¶¨Òå¡£

½Ó¿ÚÖеijÉÔ±ÐÞÊηûÊǹ̶¨µÄ¡£È«¶¼ÊÇpublicµÄ¡£

¶à ̬¡ï¡ï¡ï¡ï¡ï

¶à ̬¡ï¡ï¡ï¡ï¡ï£¨ÃæÏò¶ÔÏóÌØÕ÷Ö®Ò»£©£ºº¯Êý±¾Éí¾Í¾ß±¸¶à̬ÐÔ£¬Ä³Ò»ÖÖÊÂÎïÓв»Í¬µÄ¾ßÌåµÄÌåÏÖ¡£

ÌåÏÖ£º¸¸ÀàÒýÓûòÕß½Ó¿ÚµÄÒýÓÃÖ¸ÏòÁË×Ô¼ºµÄ×ÓÀà¶ÔÏó¡£//Animal a = new Cat();¸¸Àà¿ÉÒÔµ÷ÓÃ×ÓÀàÖи²Ð´¹ýµÄ£¨¸¸ÀàÖÐÓеķ½·¨£©

¶à̬µÄºÃ´¦£ºÌá¸ßÁ˳ÌÐòµÄÀ©Õ¹ÐÔ¡£¼Ì³ÐµÄ¸¸Àà»ò½Ó¿ÚÒ»°ãÊÇÀà¿âÖеĶ«Î÷£¬£¨Èç¹ûÒªÐÞ¸Äij¸ö·½·¨µÄ¾ßÌåʵÏÖ·½Ê½£©Ö»ÓÐͨ¹ý×ÓÀàÈ¥¸²Ð´Òª¸Ä±äµÄijһ¸ö·½·¨£¬ÕâÑùÔÚͨ¹ý½«¸¸ÀàµÄÓ¦ÓÃÖ¸Ïò×ÓÀàµÄʵÀýÈ¥µ÷Óø²Ð´¹ýµÄ·½·¨¾ÍÐÐÁË£¡

¶à̬µÄ±×¶Ë£ºµ±¸¸ÀàÒýÓÃÖ¸Ïò×ÓÀà¶ÔÏóʱ£¬ËäÈ»Ìá¸ßÁËÀ©Õ¹ÐÔ£¬µ«ÊÇÖ»ÄÜ·ÃÎʸ¸ÀàÖо߱¸µÄ·½·¨£¬²»¿ÉÒÔ·ÃÎÊ×ÓÀàÖÐÌØÓеķ½·¨¡£(ǰÆÚ²»ÄÜʹÓúóÆÚ²úÉúµÄ¹¦ÄÜ£¬¼´·ÃÎʵľÖÏÞÐÔ)

¶à̬µÄǰÌ᣺

1£º±ØÐëÒªÓйØÏµ£¬±ÈÈç¼Ì³Ð¡¢»òÕßʵÏÖ¡£

2£ºÍ¨³£»áÓи²¸Ç²Ù×÷¡£

Èç¹ûÏëÓÃ×ÓÀà¶ÔÏóµÄÌØÓз½·¨£¬ÈçºÎÅж϶ÔÏóÊÇÄĸö¾ßÌåµÄ×ÓÀàÀàÐÍÄØ£¿

¿ÉÒÔ¿ÉÒÔͨ¹ýÒ»¸ö¹Ø¼ü×Ö instanceof ;//Åж϶ÔÏóÊÇ·ñʵÏÖÁËÖ¸¶¨µÄ½Ó¿Ú»ò¼Ì³ÐÁËÖ¸¶¨µÄÀà

¸ñʽ£º<¶ÔÏó instanceof ÀàÐÍ> £¬ÅжÏÒ»¸ö¶ÔÏóÊÇ·ñËùÊôÓÚÖ¸¶¨µÄÀàÐÍ¡£

Student instanceof Person = true;//student¼Ì³ÐÁËpersonÀà

¾ßÌå·½·¨£º

boolean equals(Object obj)£ºÓÃÓڱȽÏÁ½¸ö¶ÔÏóÊÇ·ñÏàµÈ£¬ÆäʵÄÚ²¿±È½ÏµÄ¾ÍÊÇÁ½¸ö¶ÔÏóµØÖ·¡£

2£¬String toString()£º½«¶ÔÏó±ä³É×Ö·û´®£»Ä¬ÈÏ·µ»ØµÄ¸ñʽ£ºÀàÃû@¹þÏ£Öµ = getClass().getName() + '@' + Integer.toHexString(hashCode())

ΪÁ˶ÔÏó¶ÔÓ¦µÄ×Ö·û´®ÄÚÈÝÓÐÒâÒ壬¿ÉÒÔͨ¹ý¸´Ð´£¬½¨Á¢¸ÃÀà¶ÔÏó×Ô¼ºÌØÓеÄ×Ö·û´®±íÏÖÐÎʽ¡£

public String toString(){
return "person : "+age;
}

3£¬Class getClass()£º»ñÈ¡ÈÎÒâ¶ÔÏóÔËÐÐʱµÄËùÊô×Ö½ÚÂëÎļþ¶ÔÏó¡£

4£¬int hashCode()£º·µ»Ø¸Ã¶ÔÏóµÄ¹þÏ£ÂëÖµ¡£Ö§³Ö´Ë·½·¨ÊÇΪÁËÌá¸ß¹þÏ£±íµÄÐÔÄÜ¡£½«¸Ã¶ÔÏóµÄÄÚ²¿µØÖ·×ª»»³ÉÒ»¸öÕûÊýÀ´ÊµÏֵġ£

ͨ³£equals£¬toString£¬hashCode£¬ÔÚÓ¦ÓÃÖж¼»á±»¸´Ð´£¬½¨Á¢¾ßÌå¶ÔÏóµÄÌØÓеÄÄÚÈÝ¡£

ÄÚ²¿ÀࣺÈç¹ûAÀàÐèÒªÖ±½Ó·ÃÎÊBÀàÖеijÉÔ±£¬¶øBÀàÓÖÐèÒª½¨Á¢AÀàµÄ¶ÔÏó¡£Õâʱ,ΪÁË·½±ãÉè¼ÆºÍ·ÃÎÊ£¬Ö±½Ó½«AÀඨÒåÔÚBÀàÖС£¾Í¿ÉÒÔÁË¡£AÀà¾Í³ÆÎªÄÚ²¿Àà¡£ÄÚ²¿Àà¿ÉÒÔÖ±½Ó·ÃÎÊÍⲿÀàÖеijÉÔ±¡£¶øÍⲿÀàÏëÒª·ÃÎÊÄÚ²¿À࣬±ØÐëÒª½¨Á¢ÄÚ²¿ÀàµÄ¶ÔÏó¡£

class Outer{
int num = 4;
class Inner {
void show(){
System.out.println("inner show run "+num);
}
}
public void method(){
Inner in = new Inner();//´´½¨ÄÚ²¿ÀàµÄ¶ÔÏó¡£
in.show();//µ÷ÓÃÄÚ²¿ÀàµÄ·½·¨¡£ //ÄÚ²¿ÀàÖ±½Ó·ÃÎÊÍⲿÀà³ÉÔ±£¬ÓÃ×Ô¼ºµÄʵÀý¶ÔÏó£»
} //ÍⲿÀà·ÃÎÊÄÚ²¿ÀàÒª¶¨ÒåÄÚ²¿ÀàµÄ¶ÔÏó£»
}

µ±ÄÚ²¿ÀඨÒåÔÚÍⲿÀàÖеijÉԱλÖÃÉÏ£¬¿ÉÒÔʹÓÃһЩ³ÉÔ±ÐÞÊηûÐÞÊÎ private¡¢static¡£

1£ºÄ¬ÈÏÐÞÊηû¡£

Ö±½Ó·ÃÎÊÄÚ²¿Àà¸ñʽ£ºÍⲿÀàÃû.ÄÚ²¿ÀàÃû ±äÁ¿Ãû = ÍⲿÀà¶ÔÏó.ÄÚ²¿Àà¶ÔÏó;

Outer.Inner in = new Outer.new Inner();//ÕâÖÖÐÎʽºÜÉÙÓá£

µ«ÊÇÕâÖÖÓ¦Óò»¶à¼û£¬ÒòΪÄÚ²¿ÀàÖ®ËùÒÔ¶¨ÒåÔÚÄÚ²¿¾ÍÊÇΪÁË·â×°¡£ÏëÒª»ñÈ¡ÄÚ²¿Àà¶ÔÏóͨ³£¶¼Í¨¹ýÍⲿÀàµÄ·½·¨À´»ñÈ¡¡£ÕâÑù¿ÉÒÔ¶ÔÄÚ²¿Àà¶ÔÏó½øÐпØÖÆ¡£

2£ºË½ÓÐÐÞÊηû¡£

ͨ³£ÄÚ²¿Àà±»·â×°£¬¶¼»á±»Ë½Óл¯£¬ÒòΪ·â×°ÐÔ²»ÈÃÆäËû³ÌÐòÖ±½Ó·ÃÎÊ¡£

3£º¾²Ì¬ÐÞÊηû¡£

Èç¹ûÄÚ²¿Àà±»¾²Ì¬ÐÞÊΣ¬Ï൱ÓÚÍⲿÀ࣬»á³öÏÖ·ÃÎʾÖÏÞÐÔ£¬Ö»ÄÜ·ÃÎÊÍⲿÀàÖеľ²Ì¬³ÉÔ±¡£

×¢Ò⣻Èç¹ûÄÚ²¿ÀàÖж¨ÒåÁ˾²Ì¬³ÉÔ±£¬ÄÇô¸ÃÄÚ²¿Àà±ØÐëÊǾ²Ì¬µÄ¡£

ÄÚ²¿Àà±àÒëºóµÄÎļþÃûΪ£º"ÍⲿÀàÃû$ÄÚ²¿ÀàÃû.java"£»

ΪʲôÄÚ²¿Àà¿ÉÒÔÖ±½Ó·ÃÎÊÍⲿÀàÖеijÉÔ±ÄØ£¿

ÄÇÊÇÒòΪÄÚ²¿Öж¼³ÖÓÐÒ»¸öÍⲿÀàµÄÒýÓá£Õâ¸öÊÇÒýÓÃÊÇ ÍⲿÀàÃû.this

ÄÚ²¿Àà¿ÉÒÔ¶¨ÒåÔÚÍⲿÀàÖеijÉԱλÖÃÉÏ£¬Ò²¿ÉÒÔ¶¨ÒåÔÚÍⲿÀàÖеľֲ¿Î»ÖÃÉÏ¡£

µ±ÄÚ²¿Àà±»¶¨ÒåÔÚ¾Ö²¿Î»ÖÃÉÏ£¬Ö»ÄÜ·ÃÎʾֲ¿Öб»finalÐÞÊεľֲ¿±äÁ¿¡£

ÄäÃûÄÚ²¿Àࣨ¶ÔÏ󣩣ºÃ»ÓÐÃû×ÖµÄÄÚ²¿Àà¡£¾ÍÊÇÄÚ²¿ÀàµÄ¼ò»¯ÐÎʽ¡£Ò»°ãÖ»ÓÃÒ»´Î¾Í¿ÉÒÔÓÃÕâÖÖÐÎʽ¡£ÄäÃûÄÚ²¿ÀàÆäʵ¾ÍÊÇÒ»¸öÄäÃû×ÓÀà¶ÔÏó¡£ÏëÒª¶¨ÒåÄäÃûÄÚ²¿ÀࣺÐèҪǰÌᣬÄÚ²¿Àà±ØÐë¼Ì³ÐÒ»¸öÀà»òÕßʵÏÖ½Ó¿Ú¡£

ÄäÃûÄÚ²¿ÀàµÄ¸ñʽ£ºnew ¸¸ÀàÃû&½Ó¿ÚÃû(){ ¶¨Òå×ÓÀà³ÉÔ±»òÕ߸²¸Ç¸¸Àà·½·¨ }.·½·¨¡£

ÄäÃûÄÚ²¿ÀàµÄʹÓó¡¾°£º

µ±º¯ÊýµÄ²ÎÊýÊǽӿÚÀàÐÍÒýÓÃʱ£¬Èç¹û½Ó¿ÚÖеķ½·¨²»³¬¹ý3¸ö¡£¿ÉÒÔͨ¹ýÄäÃûÄÚ²¿ÀàÀ´Íê³É²ÎÊýµÄ´«µÝ¡£

Æäʵ¾ÍÊÇÔÚ´´½¨ÄäÃûÄÚ²¿Ààʱ£¬¸ÃÀàÖеķâ×°µÄ·½·¨²»Òª¹ý¶à£¬×îºÃÁ½¸ö»òÕßÁ½¸öÒÔÄÚ¡£

//ÃæÊÔ
//1
new Object(){
void show(){
System.out.println("show run");
}
}.show(); //д·¨ºÍ±àÒ붼ûÎÊÌâ
//2
Object obj = new Object(){
void show(){
System.out.println("show run");
}
};
obj.show(); //д·¨ÕýÈ·£¬±àÒë»á±¨´í

1ºÍ2µÄд·¨ÕýÈ·Âð£¿ÓÐÇø±ðÂð£¿Ëµ³öÔ­Òò¡£

д·¨ÊÇÕýÈ·£¬1ºÍ2¶¼ÊÇÔÚͨ¹ýÄäÃûÄÚ²¿ÀཨÁ¢Ò»¸öObjectÀàµÄ×ÓÀà¶ÔÏó¡£

Çø±ð£º

µÚÒ»¸ö¿ÉÊDZàÒëͨ¹ý£¬²¢ÔËÐС£

µÚ¶þ¸ö±àÒëʧ°Ü£¬ÒòΪÄäÃûÄÚ²¿ÀàÊÇÒ»¸ö×ÓÀà¶ÔÏ󣬵±ÓÃObjectµÄobjÒýÓÃÖ¸Ïòʱ£¬¾Í±»ÌáÉýΪÁËObjectÀàÐÍ£¬¶ø±àÒëʱ»á¼ì²éObjectÀàÖÐÊÇ·ñÓÐshow·½·¨£¬´Ëʱ±àÒëʧ°Ü¡£

Òì ³££º¡ï¡ï¡ï¡ï

--java.lang.Throwable£º

Throwable£º¿ÉÅ׳öµÄ¡£

|--Error£º´íÎó£¬Ò»°ãÇé¿öÏ£¬²»±àдÕë¶ÔÐԵĴúÂë½øÐд¦Àí£¬Í¨³£ÊÇjvm·¢ÉúµÄ£¬ÐèÒª¶Ô³ÌÐò½øÐÐÐÞÕý¡£

|--Exception£ºÒì³££¬¿ÉÒÔÓÐÕë¶ÔÐԵĴ¦Àí·½Ê½

Õâ¸öÌåϵÖеÄËùÓÐÀàºÍ¶ÔÏ󶼾߱¸Ò»¸ö¶ÀÓеÄÌØµã£»¾ÍÊÇ¿ÉÅ×ÐÔ¡£

¿ÉÅ×ÐÔµÄÌåÏÖ£º¾ÍÊÇÕâ¸öÌåϵÖеÄÀàºÍ¶ÔÏ󶼿ÉÒÔ±»throwsºÍthrowÁ½¸ö¹Ø¼ü×ÖËù²Ù×÷¡£

throwÓëthrowsÇø±ð£º

throwsÊÇÓÃÀ´ÉùÃ÷Ò»¸ö·½·¨¿ÉÄÜÅ׳öµÄËùÓÐÒì³£ÐÅÏ¢£¬¶øthrowÔòÊÇÖ¸Å׳öµÄÒ»¸ö¾ßÌåµÄÒì³£ÀàÐÍ¡£´ËÍâthrowsÊǽ«Òì³£ÉùÃ÷µ«ÊDz»´¦Àí£¬¶øÊǽ«Òì³£ÍùÉÏ´«£¬Ë­µ÷ÓÃÎҾͽ»¸øË­´¦Àí¡£

throwÓÃÓÚÅ׳öÒì³£¶ÔÏ󣬺óÃæ¸úµÄÊÇÒì³£¶ÔÏó£»throwÓÃÔÚº¯ÊýÄÚ¡£

throwsÓÃÓÚÅ׳öÒì³£À࣬ºóÃæ¸úµÄÒì³£ÀàÃû£¬¿ÉÒÔ¸ú¶à¸ö£¬ÓöººÅ¸ô¿ª¡£throwsÓÃÔÚº¯ÊýÉÏ¡£

throws¸ñʽ£º·½·¨Ãû£¨²ÎÊý£©throws Òì³£Àà1£¬Òì³£Àà2£¬.....

throw£º¾ÍÊÇ×Ô¼º½øÐÐÒì³£´¦Àí£¬´¦ÀíµÄʱºòÓÐÁ½ÖÖ·½Ê½£¬ÒªÃ´×Ô¼º²¶»ñÒì³££¨Ò²¾ÍÊÇtry catch½øÐв¶×½£©£¬ÒªÃ´ÉùÃ÷Å׳öÒ»¸öÒì³££¨¾ÍÊÇthrows Òì³£~~£©¡£

´¦Àí·½Ê½ÓÐÁ½ÖÖ£º1¡¢²¶×½£»2¡¢Å׳ö¡£

¶ÔÓÚ²¶×½£ºjavaÓÐÕë¶ÔÐÔµÄÓï¾ä¿é½øÐд¦Àí¡£

try {
ÐèÒª±»¼ì²âµÄ´úÂ룻
}
catch(Òì³£Àà ±äÁ¿Ãû){
Òì³£´¦Àí´úÂ룻
}
fianlly{
Ò»¶¨»áÖ´ÐеĴúÂë?
}

¶¨ÒåÒì³£´¦Àíʱ£¬Ê²Ã´Ê±ºò¶¨Òåtry£¬Ê²Ã´Ê±ºò¶¨ÒåthrowsÄØ£¿

¹¦ÄÜÄÚ²¿Èç¹û³öÏÖÒì³££¬Èç¹ûÄÚ²¿¿ÉÒÔ´¦Àí£¬¾ÍÓÃtry£»

Èç¹û¹¦ÄÜÄÚ²¿´¦Àí²»ÁË£¬¾Í±ØÐëÉùÃ÷³öÀ´£¬Èõ÷ÓÃÕß´¦Àí¡£Ê¹ÓÃthrowsÅ׳ö£¬½»¸øµ÷ÓÃÕß´¦Àí¡£Ë­µ÷ÓÃÁËÕâ¸ö¹¦ÄÜË­¾ÍÊǵ÷ÓÃÕߣ»

×Ô¶¨ÒåÒì³£µÄ²½Ö裺

1£º¶¨ÒåÒ»¸ö×ÓÀà¼Ì³ÐException»òRuntimeException£¬ÈøÃÀà¾ß±¸¿ÉÅ×ÐÔ(¼È¿ÉÒÔʹÓÃthrowºÍthrowsÈ¥µ÷ÓôËÀà)¡£

2£ºÍ¨¹ýthrow »òÕßthrows½øÐвÙ×÷¡£

Òì³£µÄת»»Ë¼Ï룺µ±³öÏÖµÄÒì³£Êǵ÷ÓÃÕß´¦Àí²»Á˵쬾ÍÐèÒª½«´ËÒ쳣ת»»ÎªÒ»¸öµ÷ÓÃÕß¿ÉÒÔ´¦ÀíµÄÒì³£Å׳ö¡£

try catch finallyµÄ¼¸ÖÖ½áºÏ·½Ê½£º

ÕâÖÖÇé¿ö£¬Èç¹û³öÏÖÒì³££¬²¢²»´¦Àí£¬µ«ÊÇ×ÊÔ´Ò»¶¨¹Ø±Õ£¬ËùÒÔtry finally¼¯ºÏֻΪ¹Ø±Õ×ÊÔ´¡£

¼Çס£ºfinallyºÜÓÐÓã¬Ö÷ÒªÓû§¹Ø±Õ×ÊÔ´¡£ÎÞÂÛÊÇ·ñ·¢ÉúÒì³££¬×ÊÔ´¶¼±ØÐë½øÐйرա£

System.exit(0); //Í˳öjvm£¬Ö»ÓÐÕâÖÖÇé¿öfinally²»Ö´ÐС£

×¢Ò⣺

Èç¹û¸¸Àà»òÕß½Ó¿ÚÖеķ½·¨Ã»ÓÐÅ׳ö¹ýÒì³££¬ÄÇô×ÓÀàÊDz»¿ÉÒÔÅ׳öÒì³£µÄ£¬Èç¹û×ÓÀàµÄ¸²¸ÇµÄ·½·¨ÖгöÏÖÁËÒì³££¬Ö»ÄÜtry²»ÄÜthrows¡£

Èç¹ûÕâ¸öÒì³£×ÓÀàÎÞ·¨´¦Àí£¬ÒѾ­Ó°ÏìÁË×ÓÀà·½·¨µÄ¾ßÌåÔËË㣬Õâʱ¿ÉÒÔÔÚ×ÓÀà·½·¨ÖУ¬Í¨¹ýthrowÅ׳öRuntimeExceptionÒì³£»òÕ߯ä×ÓÀ࣬ÕâÑù£¬×ÓÀàµÄ·½·¨ÉÏÊDz»ÐèÒªthrowsÉùÃ÷µÄ¡£

¶àỊ̈߳º¡ï¡ï¡ï¡ï

·µ»Øµ±Ç°Ï̵߳ÄÃû³Æ£ºThread.currentThread().getName()

Ï̵߳ÄÃû³ÆÊÇÓÉ£ºThread-±àºÅ¶¨ÒåµÄ¡£±àºÅ´Ó0¿ªÊ¼¡£

Ïß³ÌÒªÔËÐеĴúÂ붼ͳһ´æ·ÅÔÚÁËrun·½·¨ÖС£

Ïß³ÌÒªÔËÐбØÐëҪͨ¹ýÀàÖÐÖ¸¶¨µÄ·½·¨¿ªÆô¡£start·½·¨¡££¨Æô¶¯ºó£¬¾Í¶àÁËÒ»ÌõÖ´Ðз¾¶£©

start·½·¨£º1£©¡¢Æô¶¯ÁËỊ̈߳»2£©¡¢ÈÃjvmµ÷ÓÃÁËrun·½·¨¡£

ThreadÀàÖÐrun()ºÍstart()·½·¨µÄÇø±ð£º

start()£ºÓÃstart·½·¨À´Æô¶¯Ị̈߳¬ÕæÕýʵÏÖÁ˶àÏß³ÌÔËÐУ¬ÕâʱÎÞÐèµÈ´ýrun·½·¨Ìå´úÂëÖ´ÐÐÍê±Ï¶øÖ±½Ó¼ÌÐøÖ´ÐÐÏÂÃæµÄ´úÂ롣ͨ¹ýµ÷ÓÃThreadÀàµÄstart()·½·¨À´Æô¶¯Ò»¸öỊ̈߳¬Õâʱ´ËÏ̴߳¦ÓÚ¾ÍÐ÷£¨¿ÉÔËÐУ©×´Ì¬£¬²¢Ã»ÓÐÔËÐУ¬Ò»µ©µÃµ½cpuʱ¼äƬ£¬¾Í¿ªÊ¼Ö´ÐÐrun()·½·¨£¬ÕâÀï·½·¨run()³ÆÎªÏß³ÌÌ壬Ëü°üº¬ÁËÒªÖ´ÐеÄÕâ¸öÏ̵߳ÄÄÚÈÝ£¬Run·½·¨ÔËÐнáÊø£¬´ËÏß³ÌËæ¼´ÖÕÖ¹¡£

run()£ºrun()·½·¨Ö»ÊÇÀàµÄÒ»¸öÆÕͨ·½·¨¶øÒÑ£¬Èç¹ûÖ±½Óµ÷ÓÃRun·½·¨£¬³ÌÐòÖÐÒÀȻֻÓÐÖ÷Ïß³ÌÕâÒ»¸öỊ̈߳¬Æä³ÌÐòÖ´Ðз¾¶»¹ÊÇÖ»ÓÐÒ»Ìõ£¬»¹ÊÇҪ˳ÐòÖ´ÐУ¬»¹ÊÇÒªµÈ´ýrun·½·¨ÌåÖ´ÐÐÍê±Ïºó²Å¿É¼ÌÐøÖ´ÐÐÏÂÃæµÄ´úÂ룬ÕâÑù¾ÍûÓдﵽдÏ̵߳ÄÄ¿µÄ¡£

×ܽ᣺start()·½·¨×î±¾ÖʵŦÄÜÊÇ´ÓCPUÖÐÉêÇëÁíÒ»¸öÏ߳̿ռäÀ´Ö´ÐÐ run()·½·¨ÖеĴúÂë,ËüºÍµ±Ç°µÄÏß³ÌÊÇÁ½ÌõÏß,ÔÚÏà¶Ô¶ÀÁ¢µÄÏ߳̿ռäÔËÐÐ,Ò²¾ÍÊÇ˵,Èç¹ûÄãÖ±½Óµ÷ÓÃÏ̶߳ÔÏóµÄrun()·½·¨,µ±È»Ò²»áÖ´ÐÐ,µ«ÄÇÊÇ ÔÚµ±Ç°Ïß³ÌÖÐÖ´ÐÐ,run()·½·¨Ö´ÐÐÍê³Éºó¼ÌÐøÖ´ÐÐÏÂÃæµÄ´úÂë.¶øµ÷ÓÃstart()·½·¨ºó,run()·½·¨µÄ´úÂë»áºÍµ±Ç°Ï̲߳¢·¢(µ¥CPU)»ò²¢ÐÐ (¶àCPU)Ö´ÐС£ËùÒÔÇë¼Çסһ¾ä»°£ºµ÷ÓÃÏ̶߳ÔÏóµÄrun·½·¨²»»á²úÉúÒ»¸öеÄỊ̈߳¬ËäÈ»¿ÉÒÔ´ïµ½ÏàͬµÄÖ´Ðнá¹û,µ«Ö´Ðйý³ÌºÍÖ´ÐÐЧÂʲ»Í¬

´´½¨Ï̵߳ĵÚÒ»ÖÖ·½Ê½£º¼Ì³ÐThread £¬ÓÉ×ÓÀิдrun·½·¨¡£

²½Ö裺

1£¬¶¨ÒåÀà¼Ì³ÐThreadÀࣻ

2£¬Ä¿µÄÊǸ´Ð´run·½·¨£¬½«ÒªÈÃÏß³ÌÔËÐеĴúÂë¶¼´æ´¢µ½run·½·¨ÖУ»

3£¬Í¨¹ý´´½¨ThreadÀàµÄ×ÓÀà¶ÔÏ󣬴´½¨Ï̶߳ÔÏó£»

4£¬µ÷ÓÃÏ̵߳Ästart·½·¨£¬¿ªÆôỊ̈߳¬²¢Ö´ÐÐrun·½·¨¡£

Ïß³Ì״̬£º

±»´´½¨£ºstart()

ÔËÐУº¾ß±¸Ö´ÐÐ×ʸñ£¬Í¬Ê±¾ß±¸Ö´ÐÐȨ£»

¶³½á£ºsleep(time),wait()¡ªnotify()»½ÐÑ£»Ïß³ÌÊÍ·ÅÁËÖ´ÐÐȨ£¬Í¬Ê±ÊÍ·ÅÖ´ÐÐ×ʸñ£»

ÁÙʱ×èÈû״̬£ºÏ߳̾߱¸cpuµÄÖ´ÐÐ×ʸñ£¬Ã»ÓÐcpuµÄÖ´ÐÐȨ£»

ÏûÍö£ºstop()

´´½¨Ï̵߳ĵڶþÖÖ·½Ê½£ºÊµÏÖÒ»¸ö½Ó¿ÚRunnable¡£

²½Ö裺

1£¬¶¨ÒåÀàʵÏÖRunnable½Ó¿Ú¡£

2£¬¸²¸Ç½Ó¿ÚÖеÄrun·½·¨£¨ÓÃÓÚ·â×°Ïß³ÌÒªÔËÐеĴúÂ룩¡£

3£¬Í¨¹ýThreadÀà´´½¨Ï̶߳ÔÏó£»

4£¬½«ÊµÏÖÁËRunnable½Ó¿ÚµÄ×ÓÀà¶ÔÏó×÷Ϊʵ¼Ê²ÎÊý´«µÝ¸øThreadÀàÖеĹ¹Ô캯Êý¡£

ΪʲôҪ´«µÝÄØ£¿ÒòΪҪÈÃÏ̶߳ÔÏóÃ÷È·ÒªÔËÐеÄrun·½·¨ËùÊôµÄ¶ÔÏó¡£

5£¬µ÷ÓÃThread¶ÔÏóµÄstart·½·¨¡£¿ªÆôỊ̈߳¬²¢ÔËÐÐRunnable½Ó¿Ú×ÓÀàÖеÄrun·½·¨¡£

Ticket t = new Ticket();
/*
Ö±½Ó´´½¨Ticket¶ÔÏ󣬲¢²»ÊÇ´´½¨Ï̶߳ÔÏó¡£
ÒòΪ´´½¨¶ÔÏóÖ»ÄÜͨ¹ýnew ThreadÀ࣬»òÕßnew ThreadÀàµÄ×ÓÀà²Å¿ÉÒÔ¡£
ËùÒÔ×îÖÕÏëÒª´´½¨Ï̡߳£¼ÈȻûÓÐÁËThreadÀàµÄ×ÓÀ࣬¾ÍÖ»ÄÜÓÃThreadÀà¡£
*/
Thread t1 = new Thread(t); //´´½¨Ï̡߳£
/*
Ö»Òª½«t×÷ΪThreadÀàµÄ¹¹Ô캯ÊýµÄʵ¼Ê²ÎÊý´«Èë¼´¿ÉÍê³ÉÏ̶߳ÔÏóºÍtÖ®¼äµÄ¹ØÁª
ΪʲôҪ½«t´«¸øThreadÀàµÄ¹¹Ô캯ÊýÄØ£¿Æäʵ¾ÍÊÇΪÁËÃ÷È·Ïß³ÌÒªÔËÐеĴúÂërun·½·¨¡£
*/
t1.start();

ΪʲôҪÓÐRunnable½Ó¿ÚµÄ³öÏÖ£¿

1£ºÍ¨¹ý¼Ì³ÐThreadÀàµÄ·½Ê½£¬¿ÉÒÔÍê³É¶àÏ̵߳Ľ¨Á¢¡£µ«ÊÇÕâÖÖ·½Ê½ÓÐÒ»¸ö¾ÖÏÞÐÔ£¬Èç¹ûÒ»¸öÀàÒѾ­ÓÐÁË×Ô¼ºµÄ¸¸À࣬¾Í²»¿ÉÒԼ̳ÐThreadÀ࣬ÒòΪjavaµ¥¼Ì³ÐµÄ¾ÖÏÞÐÔ¡£

¿ÉÊǸÃÀàÖеϹÓв¿·Ö´úÂëÐèÒª±»¶à¸öÏß³ÌͬʱִÐС£ÕâʱÔõô°ìÄØ£¿

Ö»ÓжԸÃÀà½øÐжîÍâµÄ¹¦ÄÜÀ©Õ¹£¬java¾ÍÌṩÁËÒ»¸ö½Ó¿ÚRunnable¡£Õâ¸ö½Ó¿ÚÖж¨ÒåÁËrun·½·¨£¬Æäʵrun·½·¨µÄ¶¨Òå¾ÍÊÇΪÁË´æ´¢¶àÏß³ÌÒªÔËÐеĴúÂë¡£

ËùÒÔ£¬Í¨³£´´½¨Ï̶߳¼ÓõڶþÖÖ·½Ê½¡£

ÒòΪʵÏÖRunnable½Ó¿Ú¿ÉÒÔ±ÜÃâµ¥¼Ì³ÐµÄ¾ÖÏÞÐÔ¡£

2£ºÆäʵÊǽ«²»Í¬ÀàÖÐÐèÒª±»¶àÏß³ÌÖ´ÐеĴúÂë½øÐгéÈ¡¡£½«¶àÏß³ÌÒªÔËÐеĴúÂëµÄλÖõ¥¶À¶¨Òåµ½½Ó¿ÚÖС£ÎªÆäËûÀà½øÐй¦ÄÜÀ©Õ¹ÌṩÁËǰÌá¡£

ËùÒÔThreadÀàÔÚÃèÊöÏß³Ìʱ£¬ÄÚ²¿¶¨ÒåµÄrun·½·¨£¬Ò²À´×ÔÓÚRunnable½Ó¿Ú¡£

ʵÏÖRunnable½Ó¿Ú¿ÉÒÔ±ÜÃâµ¥¼Ì³ÐµÄ¾ÖÏÞÐÔ¡£¶øÇÒ£¬¼Ì³ÐThread£¬ÊÇ¿ÉÒÔ¶ÔThreadÀàÖеķ½·¨£¬½øÐÐ×ÓÀิдµÄ¡£µ«ÊDz»ÐèÒª×öÕâ¸ö¸´Ð´¶¯×÷µÄ»°£¬Ö»Îª¶¨ÒåÏ̴߳úÂë´æ·ÅλÖã¬ÊµÏÖRunnable½Ó¿Ú¸ü·½±ãһЩ¡£ËùÒÔRunnable½Ó¿Ú½«Ïß³ÌÒªÖ´ÐеÄÈÎÎñ·â×°³ÉÁ˶ÔÏó¡£

//ÃæÊÔ
new Thread(new Runnable(){ //ÄäÃû
public void run(){
System.out.println("runnable run");
}
})
{
public void run(){
System.out.println("subthread run");
}
}.start(); //½á¹û£ºsubthread run

synchronized¹Ø¼ü×Ö£¨Ò»£©

Ò»¡¢µ±Á½¸ö²¢·¢Ï̷߳ÃÎÊͬһ¸ö¶ÔÏóobjectÖеÄÕâ¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬Ò»¸öʱ¼äÄÚÖ»ÄÜÓÐÒ»¸öÏ̵߳õ½Ö´ÐС£ÁíÒ»¸öÏ̱߳ØÐëµÈ´ýµ±Ç°Ïß³ÌÖ´ÐÐÍêÕâ¸ö´úÂë¿éÒÔºó²ÅÄÜÖ´ÐиôúÂë¿é¡£

¶þ¡¢È»¶ø£¬µ±Ò»¸öÏ̷߳ÃÎÊobjectµÄÒ»¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬ÁíÒ»¸öÏß³ÌÈÔÈ»¿ÉÒÔ·ÃÎʸÃobjectÖеķÇsynchronized(this)ͬ²½´úÂë¿é¡£

Èý¡¢ÓÈÆä¹Ø¼üµÄÊÇ£¬µ±Ò»¸öÏ̷߳ÃÎÊobjectµÄÒ»¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬ÆäËûÏ̶߳ÔobjectÖÐËùÓÐÆäËüsynchronized(this)ͬ²½´úÂë¿éµÄ·ÃÎʽ«±»×èÈû¡£

ËÄ¡¢µÚÈý¸öÀý×ÓͬÑùÊÊÓÃÆäËüͬ²½´úÂë¿é¡£Ò²¾ÍÊÇ˵£¬µ±Ò»¸öÏ̷߳ÃÎÊobjectµÄÒ»¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬Ëü¾Í»ñµÃÁËÕâ¸öobjectµÄ¶ÔÏóËø¡£½á¹û£¬ÆäËüÏ̶߳ԸÃobject¶ÔÏóËùÓÐͬ²½´úÂ벿·ÖµÄ·ÃÎʶ¼±»ÔÝʱ×èÈû¡£

Îå¡¢ÒÔÉϹæÔò¶ÔÆäËü¶ÔÏóËøÍ¬ÑùÊÊÓÃ.

package ths;
public class Thread1 implements Runnable {
public void run() {
synchronized(this) {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName()
+"synchronized loop " + i);
}
}
}
}

synchronized¹Ø¼ü×Ö£¨¶þ£©

synchronized ¹Ø¼ü×Ö£¬Ëü°üÀ¨Á½ÖÖÓ÷¨£ºsynchronized ·½·¨ºÍ synchronized ¿é¡£

1. synchronized ·½·¨£ºÍ¨¹ýÔÚ·½·¨ÉùÃ÷ÖмÓÈë synchronized¹Ø¼ü×ÖÀ´ÉùÃ÷ synchronized ·½·¨¡£È磺

public synchronized void accessVal(int newVal);

synchronized ·½·¨¿ØÖƶÔÀà³ÉÔ±±äÁ¿µÄ·ÃÎÊ£ºÃ¿¸öÀàʵÀý¶ÔÓ¦Ò»°ÑËø£¬Ã¿¸ö synchronized ·½·¨¶¼±ØÐë»ñµÃµ÷Óø÷½·¨µÄÀàʵÀýµÄËø·½ÄÜÖ´ÐУ¬·ñÔòËùÊôÏß³Ì×èÈû£¬·½·¨Ò»µ©Ö´ÐУ¬¾Í¶ÀÕ¼¸ÃËø£¬Ö±µ½´Ó¸Ã·½·¨·µ»ØÊ±²Å½«ËøÊÍ·Å£¬´Ëºó±»×èÈûµÄÏ̷߳½ÄÜ»ñµÃ¸ÃËø£¬ÖØÐ½øÈë¿ÉÖ´ÐÐ״̬¡£ÕâÖÖ»úÖÆÈ·±£ÁËͬһʱ¿Ì¶ÔÓÚÿһ¸öÀàʵÀý£¬ÆäËùÓÐÉùÃ÷Ϊ synchronized µÄ³ÉÔ±º¯ÊýÖÐÖÁ¶àÖ»ÓÐÒ»¸ö´¦ÓÚ¿ÉÖ´ÐÐ״̬£¨ÒòΪÖÁ¶àÖ»ÓÐÒ»¸öÄܹ»»ñµÃ¸ÃÀàʵÀý¶ÔÓ¦µÄËø£©£¬´Ó¶øÓÐЧ±ÜÃâÁËÀà³ÉÔ±±äÁ¿µÄ·ÃÎʳåÍ»£¨Ö»ÒªËùÓпÉÄÜ·ÃÎÊÀà³ÉÔ±±äÁ¿µÄ·½·¨¾ù±»ÉùÃ÷Ϊ synchronized£©¡£

ÔÚ Java ÖУ¬²»¹âÊÇÀàʵÀý£¬Ã¿Ò»¸öÀàÒ²¶ÔÓ¦Ò»°ÑËø£¬ÕâÑùÎÒÃÇÒ²¿É½«ÀàµÄ¾²Ì¬³ÉÔ±º¯ÊýÉùÃ÷Ϊ synchronized £¬ÒÔ¿ØÖÆÆä¶ÔÀàµÄ¾²Ì¬³ÉÔ±±äÁ¿µÄ·ÃÎÊ¡£

synchronized ·½·¨µÄȱÏÝ£ºÈô½«Ò»¸ö´óµÄ·½·¨ÉùÃ÷Ϊsynchronized ½«»á´ó´óÓ°ÏìЧÂÊ£¬µäÐ͵أ¬Èô½«Ïß³ÌÀàµÄ·½·¨ run() ÉùÃ÷Ϊsynchronized £¬ÓÉÓÚÔÚÏ̵߳ÄÕû¸öÉúÃüÆÚÄÚËüÒ»Ö±ÔÚÔËÐУ¬Òò´Ë½«µ¼ÖÂËü¶Ô±¾ÀàÈκΠsynchronized ·½·¨µÄµ÷Óö¼ÓÀÔ¶²»»á³É¹¦¡£µ±È»ÎÒÃÇ¿ÉÒÔͨ¹ý½«·ÃÎÊÀà³ÉÔ±±äÁ¿µÄ´úÂë·Åµ½×¨Ãŵķ½·¨ÖУ¬½«ÆäÉùÃ÷Ϊ synchronized £¬²¢ÔÚÖ÷·½·¨Öе÷ÓÃÀ´½â¾öÕâÒ»ÎÊÌ⣬µ«ÊÇ Java ΪÎÒÃÇÌṩÁ˸üºÃµÄ½â¾ö°ì·¨£¬ÄǾÍÊÇ synchronized ¿é¡£

2. synchronized ¿é£ºÍ¨¹ý synchronized¹Ø¼ü×ÖÀ´ÉùÃ÷synchronized ¿é¡£Óï·¨ÈçÏ£º

synchronized(syncObject) {

//ÔÊÐí·ÃÎÊ¿ØÖƵĴúÂë

}

synchronized ¿éÊÇÕâÑùÒ»¸ö´úÂë¿é£¬ÆäÖеĴúÂë±ØÐë»ñµÃ¶ÔÏó syncObject £¨ÈçǰËùÊö£¬¿ÉÒÔÊÇÀàʵÀý»òÀࣩµÄËø·½ÄÜÖ´ÐУ¬¾ßÌå»úÖÆÍ¬Ç°ËùÊö¡£ÓÉÓÚ¿ÉÒÔÕë¶ÔÈÎÒâ´úÂë¿é£¬ÇÒ¿ÉÈÎÒâÖ¸¶¨ÉÏËøµÄ¶ÔÏ󣬹ÊÁé»îÐԽϸߡ£

¶Ôsynchronized(this)µÄһЩÀí½â

Ò»¡¢µ±Á½¸ö²¢·¢Ï̷߳ÃÎÊͬһ¸ö¶ÔÏóobjectÖеÄÕâ¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬Ò»¸öʱ¼äÄÚÖ»ÄÜÓÐÒ»¸öÏ̵߳õ½Ö´ÐС£ÁíÒ»¸öÏ̱߳ØÐëµÈ´ýµ±Ç°Ïß³ÌÖ´ÐÐÍêÕâ¸ö´úÂë¿éÒÔºó²ÅÄÜÖ´ÐиôúÂë¿é¡£

¶þ¡¢È»¶ø£¬µ±Ò»¸öÏ̷߳ÃÎÊobjectµÄÒ»¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬ÁíÒ»¸öÏß³ÌÈÔÈ»¿ÉÒÔ·ÃÎʸÃobjectÖеķÇsynchronized(this)ͬ²½´úÂë¿é¡£

Èý¡¢ÓÈÆä¹Ø¼üµÄÊÇ£¬µ±Ò»¸öÏ̷߳ÃÎÊobjectµÄÒ»¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬ÆäËûÏ̶߳ÔobjectÖÐËùÓÐÆäËüsynchronized(this)ͬ²½´úÂë¿éµÄ·ÃÎʽ«±»×èÈû¡£

ËÄ¡¢µÚÈý¸öÀý×ÓͬÑùÊÊÓÃÆäËüͬ²½´úÂë¿é¡£Ò²¾ÍÊÇ˵£¬µ±Ò»¸öÏ̷߳ÃÎÊobjectµÄÒ»¸ösynchronized(this)ͬ²½´úÂë¿éʱ£¬Ëü¾Í»ñµÃÁËÕâ¸öobjectµÄ¶ÔÏóËø¡£½á¹û£¬ÆäËüÏ̶߳ԸÃobject¶ÔÏóËùÓÐͬ²½´úÂ벿·ÖµÄ·ÃÎʶ¼±»ÔÝʱ×èÈû¡£

Îå¡¢ÒÔÉϹæÔò¶ÔÆäËü¶ÔÏóËøÍ¬ÑùÊÊÓá£

½â¾ö°²È«ÎÊÌâµÄÔ­Àí£º

Ö»Òª½«²Ù×÷¹²ÏíÊý¾ÝµÄÓï¾äÔÚijһʱ¶ÎÈÃÒ»¸öÏß³ÌÖ´ÐÐÍ꣬ÔÚÖ´Ðйý³ÌÖУ¬ÆäËûÏ̲߳»ÄܽøÀ´Ö´ÐоͿÉÒÔ½â¾öÕâ¸öÎÊÌâ¡£

ÈçºÎ±£ÕϹ²ÏíÊý¾ÝµÄḬ̈߳²È«ÄØ£¿

javaÖÐÌṩÁËÒ»¸ö½â¾ö·½Ê½£º¾ÍÊÇͬ²½´úÂë¿é¡£

¸ñʽ£º

synchronized(¶ÔÏó) { //ÈÎÒâ¶ÔÏ󶼿ÉÒÔ¡£Õâ¸ö¶ÔÏó¾ÍÊǹ²ÏíÊý¾Ý¡£

ÐèÒª±»Í¬²½µÄ´úÂ룻

}

ͬ²½£º¡ï¡ï¡ï¡ï¡ï

ºÃ´¦£º½â¾öÁËḬ̈߳²È«ÎÊÌâ¡£Synchronized

±×¶Ë£ºÏà¶Ô½µµÍÐÔÄÜ£¬ÒòΪÅжÏËøÐèÒªÏûºÄ×ÊÔ´£¬²úÉúÁËËÀËø¡£

ͬ²½µÄµÚ¶þÖÖ±íÏÖÐÎʽ£º //¶Ô¹²Ïí×ÊÔ´µÄ·½·¨¶¨Òåͬ²½

ͬ²½º¯Êý£ºÆäʵ¾ÍÊǽ«Í¬²½¹Ø¼ü×Ö¶¨ÒåÔÚº¯ÊýÉÏ£¬Èú¯Êý¾ß±¸ÁËͬ²½ÐÔ¡£

ͬ²½º¯ÊýÊÇÓõÄÄĸöËøÄØ£¿ //synchronized(this)ÓÃÒÔ¶¨ÒåÐèÒª½øÐÐͬ²½µÄijһ²¿·Ö´úÂë¿é

ͨ¹ýÑéÖ¤£¬º¯Êý¶¼ÓÐ×Ô¼ºËùÊôµÄ¶ÔÏóthis£¬ËùÒÔͬ²½º¯ÊýËùʹÓõÄËø¾ÍÊÇthisËø¡£This.·½·¨Ãû

µ±Í¬²½º¯Êý±»staticÐÞÊÎʱ£¬ÕâʱµÄͬ²½ÓõÄÊÇÄĸöËøÄØ£¿

¾²Ì¬º¯ÊýÔÚ¼ÓÔØÊ±ËùÊôÓÚÀ࣬ÕâʱÓпÉÄÜ»¹Ã»ÓиÃÀà²úÉúµÄ¶ÔÏ󣬵«ÊǸÃÀàµÄ×Ö½ÚÂëÎļþ¼ÓÔØ½øÄÚ´æ¾ÍÒѾ­±»·â×°³ÉÁ˶ÔÏó£¬Õâ¸ö¶ÔÏó¾ÍÊǸÃÀàµÄ×Ö½ÚÂëÎļþ¶ÔÏó¡£

ËùÒÔ¾²Ì¬¼ÓÔØÊ±£¬Ö»ÓÐÒ»¸ö¶ÔÏó´æÔÚ£¬ÄÇô¾²Ì¬Í¬²½º¯Êý¾ÍʹÓõÄÕâ¸ö¶ÔÏó¡£

Õâ¸ö¶ÔÏó¾ÍÊÇ ÀàÃû.class

ͬ²½´úÂë¿éºÍͬ²½º¯ÊýµÄÇø±ð£¿

ͬ²½´úÂë¿éʹÓõÄËø¿ÉÒÔÊÇÈÎÒâ¶ÔÏó¡£

ͬ²½º¯ÊýʹÓõÄËøÊÇthis£¬¾²Ì¬Í¬²½º¯ÊýµÄËøÊǸÃÀàµÄ×Ö½ÚÂëÎļþ¶ÔÏó¡£

ÔÚÒ»¸öÀàÖÐÖ»ÓÐÒ»¸öͬ²½µÄ»°£¬¿ÉÒÔʹÓÃͬ²½º¯Êý¡£Èç¹ûÓжàͬ²½£¬±ØÐëʹÓÃͬ²½´úÂë¿é£¬À´È·¶¨²»Í¬µÄËø¡£ËùÒÔͬ²½´úÂë¿éÏà¶ÔÁé»îһЩ¡£

¡ï¿¼µãÎÊÌ⣺Çëдһ¸öÑÓ³Ù¼ÓÔØµÄµ¥Àýģʽ£¿Ð´ÀÁººÊ½£»µ±³öÏÖ¶àÏ̷߳ÃÎÊʱÔõô½â¾ö£¿¼Óͬ²½£¬½â¾ö°²È«ÎÊÌ⣻ЧÂʸßÂ𣿲»¸ß£»ÔõÑù½â¾ö£¿Í¨¹ýË«ÖØÅжϵÄÐÎʽ½â¾ö¡£

//ÀÁººÊ½£ºÑÓ³Ù¼ÓÔØ·½Ê½¡£

µ±¶àÏ̷߳ÃÎÊÀÁººÊ½Ê±£¬ÒòΪÀÁººÊ½µÄ·½·¨ÄÚ¶Ô¹²ÐÔÊý¾Ý½øÐжàÌõÓï¾äµÄ²Ù×÷¡£ËùÒÔÈÝÒ׳öÏÖḬ̈߳²È«ÎÊÌ⡣ΪÁ˽â¾ö£¬¼ÓÈëͬ²½»úÖÆ£¬½â¾ö°²È«ÎÊÌâ¡£µ«ÊÇÈ´´øÀ´ÁËЧÂʽµµÍ¡£

ΪÁËЧÂÊÎÊÌ⣬ͨ¹ýË«ÖØÅжϵÄÐÎʽ½â¾ö¡£

class Single{
private static Single s = null;
private Single(){}
public static Single getInstance(){ //ËøÊÇË­£¿×Ö½ÚÂëÎļþ¶ÔÏó£»
if(s == null){
synchronized(Single.class){
if(s == null)
s = new Single();
}
}
return s;
}
}

µÈ´ý»½ÐÑ»úÖÆ£ºÉæ¼°µÄ·½·¨£º

wait:½«Í¬²½ÖеÄÏ̴߳¦ÓÚ¶³½á״̬¡£ÊÍ·ÅÁËÖ´ÐÐȨ£¬ÊÍ·ÅÁË×ʸñ¡£Í¬Ê±½«Ï̶߳ÔÏó´æ´¢µ½Ï̳߳ØÖС£

notify£º»½ÐÑÏ̳߳ØÖÐijһ¸öµÈ´ýÏ̡߳£

notifyAll:»½ÐѵÄÊÇÏ̳߳ØÖеÄËùÓÐÏ̡߳£

×¢Ò⣺

1£ºÕâЩ·½·¨¶¼ÐèÒª¶¨ÒåÔÚͬ²½ÖС£

2£ºÒòΪÕâЩ·½·¨±ØÐëÒª±êʾËùÊôµÄËø¡£

ÄãÒªÖªµÀ AËøÉϵÄÏ̱߳»waitÁË,ÄÇÕâ¸öÏ߳̾ÍÏ൱ÓÚ´¦ÓÚAËøµÄÏ̳߳ØÖУ¬Ö»ÄÜAËøµÄnotify»½ÐÑ¡£

3£ºÕâÈý¸ö·½·¨¶¼¶¨ÒåÔÚObjectÀàÖС£ÎªÊ²Ã´²Ù×÷Ï̵߳ķ½·¨¶¨ÒåÔÚObjectÀàÖУ¿

ÒòΪÕâÈý¸ö·½·¨¶¼ÐèÒª¶¨Òåͬ²½ÄÚ£¬²¢±êʾËùÊôµÄͬ²½Ëø£¬¼ÈÈ»±»Ëøµ÷Ó㬶øËøÓÖ¿ÉÒÔÊÇÈÎÒâ¶ÔÏó£¬ÄÇôÄܱ»ÈÎÒâ¶ÔÏóµ÷Óõķ½·¨Ò»¶¨¶¨ÒåÔÚObjectÀàÖС£

waitºÍsleepÇø±ð£º ·ÖÎöÕâÁ½¸ö·½·¨£º´ÓÖ´ÐÐȨºÍËøÉÏÀ´·ÖÎö£º

wait£º¿ÉÒÔÖ¸¶¨Ê±¼äÒ²¿ÉÒÔ²»Ö¸¶¨Ê±¼ä¡£²»Ö¸¶¨Ê±¼ä£¬Ö»ÄÜÓɶÔÓ¦µÄnotify»òÕßnotifyAllÀ´»½ÐÑ¡£

sleep£º±ØÐëÖ¸¶¨Ê±¼ä£¬Ê±¼äµ½×Ô¶¯´Ó¶³½á״̬ת³ÉÔËÐÐ״̬(ÁÙʱ×èÈû״̬)¡£

wait£ºÏ̻߳áÊÍ·ÅÖ´ÐÐȨ£¬¶øÇÒÏ̻߳áÊÍ·ÅËø¡£

sleep£ºÏ̻߳áÊÍ·ÅÖ´ÐÐȨ£¬µ«²»ÊDz»ÊÍ·ÅËø¡£

Ï̵߳ÄÍ£Ö¹£ºÍ¨¹ýstop·½·¨¾Í¿ÉÒÔÍ£Ö¹Ï̡߳£µ«ÊÇÕâ¸ö·½Ê½¹ýʱÁË¡£

Í£Ö¹Ị̈߳ºÔ­Àí¾ÍÊÇ£ºÈÃÏß³ÌÔËÐеĴúÂë½áÊø£¬Ò²¾ÍÊǽáÊørun·½·¨¡£

Ôõô½áÊørun·½·¨£¿Ò»°ãrun·½·¨Àï¿Ï¶¨¶¨ÒåÑ­»·¡£ËùÒÔÖ»Òª½áÊøÑ­»·¼´¿É¡£

µÚÒ»ÖÖ·½Ê½£º¶¨ÒåÑ­»·µÄ½áÊø±ê¼Ç¡£

µÚ¶þÖÖ·½Ê½£ºÈç¹ûÏ̴߳¦ÓÚÁ˶³½á״̬£¬ÊDz»¿ÉÄܶÁµ½±ê¼ÇµÄ£¬Õâʱ¾ÍÐèҪͨ¹ýThreadÀàÖеÄinterrupt·½·¨£¬½«Æä¶³½á×´Ì¬Ç¿ÖÆÇå³ý¡£ÈÃÏָ̻߳´¾ß±¸Ö´ÐÐ×ʸñµÄ״̬£¬ÈÃÏ߳̿ÉÒÔ¶Áµ½±ê¼Ç£¬²¢½áÊø¡£

---------< java.lang.Thread >----------

interrupt()£ºÖжÏÏ̡߳£

setPriority(int newPriority)£º¸ü¸ÄÏ̵߳ÄÓÅÏȼ¶¡£

getPriority()£º·µ»ØÏ̵߳ÄÓÅÏȼ¶¡£

toString()£º·µ»Ø¸ÃÏ̵߳Ä×Ö·û´®±íʾÐÎʽ£¬°üÀ¨Ïß³ÌÃû³Æ¡¢ÓÅÏȼ¶ºÍÏß³Ì×é¡£

Thread.yield()£ºÔÝÍ£µ±Ç°ÕýÔÚÖ´ÐеÄÏ̶߳ÔÏ󣬲¢Ö´ÐÐÆäËûÏ̡߳£

setDaemon(true)£º½«¸ÃÏ̱߳ê¼ÇÎªÊØ»¤Ï̻߳òÓû§Ï̡߳£½«¸ÃÏ̱߳ê¼ÇÎªÊØ»¤Ï̻߳òÓû§Ï̡߳£µ±ÕýÔÚÔËÐеÄÏ̶߳¼ÊÇÊØ»¤Ïß³Ìʱ£¬Java ÐéÄâ»úÍ˳ö¡£¸Ã·½·¨±ØÐëÔÚÆô¶¯Ïß³Ìǰµ÷Óá£

join£ºÁÙʱ¼ÓÈëÒ»¸öÏ̵߳Äʱºò¿ÉÒÔʹÓÃjoin·½·¨¡£

µ±AÏß³ÌÖ´Ðе½ÁËBÏ̵߳Äjoin·½Ê½¡£AÏ̴߳¦ÓÚ¶³½á״̬£¬ÊÍ·ÅÁËÖ´ÐÐȨ£¬B¿ªÊ¼Ö´ÐС£AʲôʱºòÖ´ÐÐÄØ£¿Ö»Óе±BÏß³ÌÔËÐнáÊøºó£¬A²Å´Ó¶³½á״̬»Ö¸´ÔËÐÐ״ִ̬ÐС£

LOCKµÄ³öÏÖÌæ´úÁËͬ²½£ºlock.lock();¡­¡­¡­lock.unlock();

Lock½Ó¿Ú£º¶àÏß³ÌÔÚJDK1.5°æ±¾Éý¼¶Ê±£¬ÍƳöÒ»¸ö½Ó¿ÚLock½Ó¿Ú¡£

½â¾öḬ̈߳²È«ÎÊÌâʹÓÃͬ²½µÄÐÎʽ£¬(ͬ²½´úÂë¿é£¬ÒªÃ´Í¬²½º¯Êý)Æäʵ×îÖÕʹÓõͼÊÇËø»úÖÆ¡£

µ½Á˺óÆÚ°æ±¾£¬Ö±½Ó½«Ëø·â×°³ÉÁ˶ÔÏó¡£Ï߳̽øÈëͬ²½¾ÍÊǾ߱¸ÁËËø£¬Ö´ÐÐÍ꣬À뿪ͬ²½£¬¾ÍÊÇÊÍ·ÅÁËËø¡£

ÔÚºóÆÚ¶ÔËøµÄ·ÖÎö¹ý³ÌÖУ¬·¢ÏÖ£¬»ñÈ¡Ëø£¬»òÕßÊÍ·ÅËøµÄ¶¯×÷Ó¦¸ÃÊÇËøÕâ¸öÊÂÎï¸üÇå³þ¡£ËùÒÔ½«ÕâЩ¶¯×÷¶¨ÒåÔÚÁËËøµ±ÖУ¬²¢°ÑËø¶¨Òå³É¶ÔÏó¡£

ËùÒÔͬ²½ÊÇÒþʾµÄËø²Ù×÷£¬¶øLock¶ÔÏóÊÇÏÔʾµÄËø²Ù×÷£¬ËüµÄ³öÏÖ¾ÍÌæ´úÁËͬ²½¡£

ÔÚ֮ǰµÄ°æ±¾ÖÐʹÓÃObjectÀàÖÐwait¡¢notify¡¢notifyAllµÄ·½Ê½À´Íê³ÉµÄ¡£ÄÇÊÇÒòΪͬ²½ÖеÄËøÊÇÈÎÒâ¶ÔÏó£¬ËùÒÔ²Ù×÷ËøµÄµÈ´ý»½Ðѵķ½·¨¶¼¶¨ÒåÔÚObjectÀàÖС£

¶øÏÖÔÚËøÊÇÖ¸¶¨¶ÔÏóLock¡£ËùÒÔ²éÕҵȴý»½ÐÑ»úÖÆ·½Ê½ÐèҪͨ¹ýLock½Ó¿ÚÀ´Íê³É¡£¶øLock½Ó¿ÚÖв¢Ã»ÓÐÖ±½Ó²Ù×÷µÈ´ý»½Ðѵķ½·¨£¬¶øÊǽ«ÕâЩ·½Ê½ÓÖµ¥¶À·â×°µ½ÁËÒ»¸ö¶ÔÏóÖС£Õâ¸ö¶ÔÏó¾ÍÊÇCondition£¬½«ObjectÖеÄÈý¸ö·½·¨½øÐе¥¶ÀµÄ·â×°¡£²¢ÌṩÁ˹¦ÄÜÒ»Öµķ½·¨await()¡¢signal()¡¢signalAll()ÌåÏÖа汾¶ÔÏóµÄºÃ´¦¡£

< java.util.concurrent.locks > Condition½Ó¿Ú£ºawait()¡¢signal()¡¢signalAll()£»

class BoundedBuffer {
final Lock lock = new ReentrantLock();
final Condition notFull = lock.newCondition();
final Condition notEmpty = lock.newCondition();
final Object[] items = new Object[100];
int putptr, takeptr, count;
public void put(Object x) throws InterruptedException {
lock.lock();
try {
while (count == items.length)
notFull.await();
items[putptr] = x;
if (++putptr == items.length) putptr = 0;
++count;
notEmpty.signal();
}
finally {
lock.unlock();
}
}
public Object take() throws InterruptedException {
lock.lock();
try {
while (count == 0)
notEmpty.await();
Object x = items[takeptr];
if (++takeptr == items.length) takeptr = 0;
--count;
notFull.signal();
return x;
}
finally {
lock.unlock();
}
}
}

¼¯ºÏ¿ò¼Ü

¼¯ºÏ¿ò¼Ü£º¡ï¡ï¡ï¡ï¡ï£¬ÓÃÓÚ´æ´¢Êý¾ÝµÄÈÝÆ÷¡£

¶ÔÓÚ¼¯ºÏÈÝÆ÷£¬ÓкܶàÖÖ¡£ÒòΪÿһ¸öÈÝÆ÷µÄ×ÔÉíÌØµã²»Í¬£¬ÆäʵԭÀíÔÚÓÚÿ¸öÈÝÆ÷µÄÄÚ²¿Êý¾Ý½á¹¹²»Í¬¡£

¼¯ºÏÈÝÆ÷ÔÚ²»¶ÏÏòÉϳéÈ¡¹ý³ÌÖС£³öÏÖÁ˼¯ºÏÌåϵ¡£

ÔÚʹÓÃÒ»¸öÌåϵʱ£¬Ô­Ôò£º²ÎÔĶ¥²ãÄÚÈÝ¡£½¨Á¢µ×²ã¶ÔÏó¡£

--< java.util >-- List½Ó¿Ú£º

List±¾ÉíÊÇCollection½Ó¿ÚµÄ×Ó½Ó¿Ú£¬¾ß±¸ÁËCollectionµÄËùÓз½·¨¡£ÏÖÔÚѧϰListÌåÏµÌØÓеĹ²ÐÔ·½·¨£¬²éÔÄ·½·¨·¢ÏÖListµÄÌØÓз½·¨¶¼ÓÐË÷Òý£¬ÕâÊǸü¯ºÏ×î´óµÄÌØµã¡£

List£ºÓÐÐò(ÔªËØ´æÈ뼯ºÏµÄ˳ÐòºÍÈ¡³öµÄ˳ÐòÒ»ÖÂ)£¬ÔªËض¼ÓÐË÷Òý¡£ÔªËØ¿ÉÒÔÖØ¸´¡£

|--ArrayList£ºµ×²ãµÄÊý¾Ý½á¹¹ÊÇÊý×é,Ï̲߳»Í¬²½£¬ArrayListÌæ´úÁËVector£¬²éÑ¯ÔªËØµÄËٶȷdz£¿ì¡£

|--LinkedList£ºµ×²ãµÄÊý¾Ý½á¹¹ÊÇÁ´±í£¬Ï̲߳»Í¬²½£¬ÔöÉ¾ÔªËØµÄËٶȷdz£¿ì¡£

|--Vector£ºµ×²ãµÄÊý¾Ý½á¹¹¾ÍÊÇÊý×飬Ïß³Ìͬ²½µÄ£¬VectorÎÞÂÛ²éѯºÍÔöɾ¶¼¾ÞÂý¡£

¿É±ä³¤¶ÈÊý×éµÄÔ­Àí£º

µ±ÔªËس¬³öÊý×鳤¶È£¬»á²úÉúÒ»¸öÐÂÊý×飬½«Ô­Êý×éµÄÊý¾Ý¸´ÖƵ½ÐÂÊý×éÖУ¬ÔÙ½«ÐµÄÔªËØÌí¼Óµ½ÐÂÊý×éÖС£

ArrayList£ºÊǰ´ÕÕÔ­Êý×éµÄ50%ÑÓ³¤¡£¹¹ÔìÒ»¸ö³õʼÈÝÁ¿Îª 10 µÄ¿ÕÁÐ±í¡£

Vector£ºÊǰ´ÕÕÔ­Êý×éµÄ100%ÑÓ³¤¡£

--< java.util >-- Set½Ó¿Ú£º

Êý¾Ý½á¹¹£ºÊý¾ÝµÄ´æ´¢·½Ê½£»

Set½Ó¿ÚÖеķ½·¨ºÍCollectionÖз½·¨Ò»Öµġ£Set½Ó¿ÚÈ¡³ö·½Ê½Ö»ÓÐÒ»ÖÖ£¬µü´úÆ÷¡£

|--HashSet£ºµ×²ãÊý¾Ý½á¹¹ÊǹþÏ£±í£¬Ïß³ÌÊDz»Í¬²½µÄ¡£ÎÞÐò£¬¸ßЧ£»

HashSet¼¯ºÏ±£Ö¤ÔªËØÎ¨Ò»ÐÔ£ºÍ¨¹ýÔªËØµÄhashCode·½·¨£¬ºÍequals·½·¨Íê³ÉµÄ¡£

µ±ÔªËصÄhashCodeÖµÏàͬʱ£¬²Å¼ÌÐøÅжÏÔªËØµÄequalsÊÇ·ñΪtrue¡£

Èç¹ûΪtrue£¬ÄÇôÊÓΪÏàÍ¬ÔªËØ£¬²»´æ¡£Èç¹ûΪfalse£¬ÄÇô´æ´¢¡£

Èç¹ûhashCodeÖµ²»Í¬£¬ÄÇô²»ÅжÏequals£¬´Ó¶øÌá¸ß¶ÔÏó±È½ÏµÄËÙ¶È¡£

|--LinkedHashSet£ºÓÐÐò£¬hashsetµÄ×ÓÀà¡£

|--TreeSet£º¶ÔSet¼¯ºÏÖеÄÔªËØµÄ½øÐÐÖ¸¶¨Ë³ÐòµÄÅÅÐò¡£²»Í¬²½¡£TreeSetµ×²ãµÄÊý¾Ý½á¹¹¾ÍÊǶþ²æÊ÷¡£

¶ÔÓÚArrayList¼¯ºÏ£¬ÅжÏÔªËØÊÇ·ñ´æÔÚ£¬»òÕßÉ¾ÔªËØµ×²ãÒÀ¾Ý¶¼ÊÇequals·½·¨¡£

¶ÔÓÚHashSet¼¯ºÏ£¬ÅжÏÔªËØÊÇ·ñ´æÔÚ£¬»òÕßɾ³ýÔªËØ£¬µ×²ãÒÀ¾ÝµÄÊÇhashCode·½·¨ºÍequals·½·¨¡£

Map¼¯ºÏ£º

|--Hashtable£ºµ×²ãÊǹþÏ£±íÊý¾Ý½á¹¹£¬ÊÇÏß³Ìͬ²½µÄ¡£²»¿ÉÒÔ´æ´¢null¼ü£¬nullÖµ¡£

|--HashMap£ºµ×²ãÊǹþÏ£±íÊý¾Ý½á¹¹£¬ÊÇÏ̲߳»Í¬²½µÄ¡£¿ÉÒÔ´æ´¢null¼ü£¬nullÖµ¡£Ìæ´úÁËHashtable.

|--TreeMap£ºµ×²ãÊǶþ²æÊ÷½á¹¹£¬¿ÉÒÔ¶Ômap¼¯ºÏÖеļü½øÐÐÖ¸¶¨Ë³ÐòµÄÅÅÐò¡£

Map¼¯ºÏ´æ´¢ºÍCollectionÓÐןܴó²»Í¬£º

CollectionÒ»´Î´æÒ»¸öÔªËØ£»MapÒ»´Î´æÒ»¶ÔÔªËØ¡£

CollectionÊǵ¥Áм¯ºÏ£»MapÊÇË«Áм¯ºÏ¡£

MapÖеĴ洢µÄÒ»¶ÔÔªËØ£ºÒ»¸öÊǼü£¬Ò»¸öÊÇÖµ£¬¼üÓëÖµÖ®¼äÓжÔÓ¦(Ó³Éä)¹ØÏµ¡£

ÌØµã£ºÒª±£Ö¤map¼¯ºÏÖмüµÄΨһÐÔ¡£

ÏëÒª»ñÈ¡mapÖеÄËùÓÐÔªËØ£º

Ô­Àí£ºmapÖÐÊÇûÓеü´úÆ÷µÄ£¬collection¾ß±¸µü´úÆ÷£¬Ö»Òª½«map¼¯ºÏת³ÉSet¼¯ºÏ£¬¿ÉÒÔʹÓõü´úÆ÷ÁË¡£Ö®ËùÒÔת³Éset£¬ÊÇÒòΪmap¼¯ºÏ¾ß±¸×żüµÄΨһÐÔ£¬Æäʵset¼¯ºÏ¾ÍÀ´×ÔÓÚmap£¬set¼¯ºÏµ×²ãÆäʵÓõľÍÊÇmapµÄ·½·¨¡£

°Ñmap¼¯ºÏת³ÉsetµÄ·½·¨£º

Set keySet();

Set entrySet();//È¡µÄÊǼüºÍÖµµÄÓ³Éä¹ØÏµ¡£

Entry¾ÍÊÇMap½Ó¿ÚÖеÄÄÚ²¿½Ó¿Ú£»

ΪʲôҪ¶¨ÒåÔÚmapÄÚ²¿ÄØ£¿entryÊÇ·ÃÎʼüÖµ¹ØÏµµÄÈë¿Ú£¬ÊÇmapµÄÈë¿Ú£¬·ÃÎʵÄÊÇmapÖеļüÖµ¶Ô¡£

È¡³ömap¼¯ºÏÖÐËùÓÐÔªËØµÄ·½Ê½Ò»£ºkeySet()·½·¨¡£

¿ÉÒÔ½«map¼¯ºÏÖеļü¶¼È¡³ö´æ·Åµ½set¼¯ºÏÖС£¶Ôset¼¯ºÏ½øÐеü´ú¡£µü´úÍê³É£¬ÔÙͨ¹ýget·½·¨¶Ô»ñÈ¡µ½µÄ¼ü½øÐÐÖµµÄ»ñÈ¡¡£

Set keySet = map.keySet();
Iterator it = keySet.iterator();
while(it.hasNext()) {
Object key = it.next();
Object value = map.get(key);
System.out.println(key+":"+value);
}

È¡³ömap¼¯ºÏÖÐËùÓÐÔªËØµÄ·½Ê½¶þ£ºentrySet()·½·¨¡£

Set entrySet = map.entrySet();
Iterator it = entrySet.iterator();
while(it.hasNext()) {
Map.Entry me = (Map.Entry)it.next();
System.out.println(me.getKey()+"::::"+me.getValue());
}

½«·Çͬ²½¼¯ºÏת³Éͬ²½¼¯ºÏµÄ·½·¨£ºCollectionsÖÐµÄ XXX synchronizedXXX(XXX);

List synchronizedList(list);

Map synchronizedMap(map);

public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {

return new SynchronizedMap<K,V>(m);

}

Ô­Àí£º¶¨ÒåÒ»¸öÀ࣬½«¼¯ºÏËùÓеķ½·¨¼Óͬһ°ÑËøºó·µ»Ø¡£

List list = Collections.synchronizedList(new ArrayList());

Map<String,String> synmap = Collections.synchronizedMap(map);

Collection ºÍ CollectionsµÄÇø±ð£º

CollectionsÊǸöjava.utilϵÄÀ࣬ÊÇÕë¶Ô¼¯ºÏÀàµÄÒ»¸ö¹¤¾ßÀà,ÌṩһϵÁо²Ì¬·½·¨,ʵÏÖ¶Ô¼¯ºÏµÄ²éÕÒ¡¢ÅÅÐò¡¢Ìæ»»¡¢Ḭ̈߳²È«»¯£¨½«·Çͬ²½µÄ¼¯ºÏת»»³Éͬ²½µÄ£©µÈ²Ù×÷¡£

CollectionÊǸöjava.utilϵĽӿڣ¬ËüÊǸ÷ÖÖ¼¯ºÏ½á¹¹µÄ¸¸½Ó¿Ú£¬¼Ì³ÐÓÚËüµÄ½Ó¿ÚÖ÷ÒªÓÐSetºÍList,ÌṩÁ˹ØÓÚ¼¯ºÏµÄһЩ²Ù×÷,Èç²åÈ롢ɾ³ý¡¢ÅжÏÒ»¸öÔªËØÊÇ·ñÆä³ÉÔ±¡¢±éÀúµÈ¡£

×Ô¶¯²ð×°Ï䣺javaÖÐÊý¾ÝÀàÐÍ·ÖΪÁ½ÖÖ £º »ù±¾Êý¾ÝÀàÐÍ ÒýÓÃÊý¾ÝÀàÐÍ(¶ÔÏó)

ÔÚ java³ÌÐòÖÐËùÓеÄÊý¾Ý¶¼ÐèÒªµ±×ö¶ÔÏóÀ´´¦Àí£¬Õë¶Ô8ÖÖ»ù±¾Êý¾ÝÀàÐÍÌṩÁ˰ü×°À࣬ÈçÏ£º

int --> Integer

byte --> Byte

short --> Short

long --> Long

char --> Character

double --> Double

float --> Float

boolean --> Boolean

jdk5ÒÔǰ»ù±¾Êý¾ÝÀàÐͺͰü×°ÀàÖ®¼äÐèÒª»¥×ª£º

»ù±¾---ÒýÓÃ Integer x = new Integer(x);

ÒýÓÃ---»ù±¾ int num = x.intValue();

1)¡¢Integer x = 1; x = x + 1; ¾­ÀúÁËʲô¹ý³Ì£¿×°Ïä ¨¤ ²ðÏä ¨¤ ×°Ï䣻

2)¡¢ÎªÁËÓÅ»¯£¬ÐéÄâ»úΪ°ü×°ÀàÌṩÁË»º³å³Ø£¬Integer³ØµÄ´óС -128~127 Ò»¸ö×ֽڵĴóС£»

3)¡¢String³Ø£ºJavaΪÁËÓÅ»¯×Ö·û´®²Ù×÷ ÌṩÁËÒ»¸ö»º³å³Ø£»

·ºÐÍ£ºjdk1.5°æ±¾ÒÔºó³öÏÖµÄÒ»¸ö°²È«»úÖÆ¡£±íÏÖ¸ñʽ£º< >

ºÃ´¦£º

1£º½«ÔËÐÐʱÆÚµÄÎÊÌâClassCastExceptionÎÊÌâת»»³ÉÁ˱àÒëʧ°Ü£¬ÌåÏÖÔÚ±àÒëʱÆÚ£¬³ÌÐòÔ±¾Í¿ÉÒÔ½â¾öÎÊÌâ¡£

2£º±ÜÃâÁËÇ¿ÖÆ×ª»»µÄÂé·³¡£

·ºÐÍÖеÄͨÅä·û£º¿ÉÒÔ½â¾öµ±¾ßÌåÀàÐͲ»È·¶¨µÄʱºò£¬Õâ¸öͨÅä·û¾ÍÊÇ ? £»µ±²Ù×÷ÀàÐÍʱ£¬²»ÐèҪʹÓÃÀàÐ͵ľßÌ幦ÄÜʱ£¬Ö»Ê¹ÓÃObjectÀàÖеŦÄÜ¡£ÄÇô¿ÉÒÔÓà ? ͨÅä·ûÀ´±íδ֪ÀàÐÍ¡£

·´Éä¼¼Êõ

·´Éä¼¼Êõ£ºÆäʵ¾ÍÊǶ¯Ì¬¼ÓÔØÒ»¸öÖ¸¶¨µÄÀ࣬²¢»ñÈ¡¸ÃÀàÖеÄËùÓеÄÄÚÈÝ¡£²¢½«×Ö½ÚÂëÎļþÖеÄÄÚÈݶ¼·â×°³É¶ÔÏó£¬ÕâÑù±ãÓÚ²Ù×÷ÕâЩ³ÉÔ±¡£¼òµ¥Ëµ£º·´Éä¼¼Êõ¿ÉÒÔ¶ÔÒ»¸öÀà½øÐнâÆÊ¡£

·´ÉäµÄºÃ´¦£º´ó´óµÄÔöÇ¿Á˳ÌÐòµÄÀ©Õ¹ÐÔ¡£

·´ÉäµÄ»ù±¾²½Ö裺

1¡¢»ñµÃClass¶ÔÏ󣬾ÍÊÇ»ñÈ¡µ½Ö¸¶¨µÄÃû³ÆµÄ×Ö½ÚÂëÎļþ¶ÔÏó¡£

2¡¢ÊµÀý»¯¶ÔÏ󣬻ñµÃÀàµÄÊôÐÔ¡¢·½·¨»ò¹¹Ô캯Êý¡£

3¡¢·ÃÎÊÊôÐÔ¡¢µ÷Ó÷½·¨¡¢µ÷Óù¹Ô캯Êý´´½¨¶ÔÏó¡£

»ñÈ¡Õâ¸öClass¶ÔÏó£¬ÓÐÈýÖÖ·½Ê½£º

1£ºÍ¨¹ýÿ¸ö¶ÔÏ󶼾߱¸µÄ·½·¨getClassÀ´»ñÈ¡¡£±×¶Ë£º±ØÐëÒª´´½¨¸ÃÀà¶ÔÏ󣬲ſÉÒÔµ÷ÓÃgetClass·½·¨¡£

2£ºÃ¿Ò»¸öÊý¾ÝÀàÐÍ(»ù±¾Êý¾ÝÀàÐͺÍÒýÓÃÊý¾ÝÀàÐÍ)¶¼ÓÐÒ»¸ö¾²Ì¬µÄÊôÐÔclass¡£±×¶Ë£º±ØÐëÒªÏÈÃ÷È·¸ÃÀà¡£

ǰÁ½ÖÖ·½Ê½²»ÀûÓÚ³ÌÐòµÄÀ©Õ¹£¬ÒòΪ¶¼ÐèÒªÔÚ³ÌÐòʹÓþßÌåµÄÀàÀ´Íê³É¡£

3£ºÊ¹ÓõÄClassÀàÖеķ½·¨£¬¾²Ì¬µÄforName·½·¨¡£

Ö¸¶¨Ê²Ã´ÀàÃû£¬¾Í»ñȡʲôÀà×Ö½ÚÂëÎļþ¶ÔÏó£¬ÕâÖÖ·½Ê½µÄÀ©Õ¹ÐÔ×îÇ¿£¬Ö»Òª½«ÀàÃûµÄ×Ö·û´®´«Èë¼´¿É¡£

// 1. ¸ù¾Ý¸ø¶¨µÄÀàÃûÀ´»ñµÃ ÓÃÓÚÀà¼ÓÔØ
String classname = "cn.itcast.reflect.Person";// À´×ÔÅäÖÃÎļþ
Class clazz = Class.forName(classname);// ´Ë¶ÔÏó´ú±íPerson.class
// 2. Èç¹ûÄõ½Á˶ÔÏ󣬲»ÖªµÀÊÇʲôÀàÐÍ ÓÃÓÚ»ñµÃ¶ÔÏóµÄÀàÐÍ
Object obj = new Person();
Class clazz1 = obj.getClass();// »ñµÃ¶ÔÏó¾ßÌåµÄÀàÐÍ
// 3. Èç¹ûÊÇÃ÷È·µØ»ñµÃij¸öÀàµÄClass¶ÔÏó Ö÷ÒªÓÃÓÚ´«²Î
Class clazz2 = Person.class;

·´ÉäµÄÓ÷¨£º

1£©¡¢ÐèÒª»ñµÃjavaÀàµÄ¸÷¸ö×é³É²¿·Ö£¬Ê×ÏÈÐèÒª»ñµÃÀàµÄClass¶ÔÏ󣬻ñµÃClass¶ÔÏóµÄÈýÖÖ·½Ê½£º

Class.forName(classname) ÓÃÓÚ×öÀà¼ÓÔØ

obj.getClass() ÓÃÓÚ»ñµÃ¶ÔÏóµÄÀàÐÍ

ÀàÃû.class ÓÃÓÚ»ñµÃÖ¸¶¨µÄÀàÐÍ£¬´«²ÎÓÃ

2)¡¢·´ÉäÀàµÄ³ÉÔ±·½·¨£º

Class clazz = Person.class;
Method method = clazz.getMethod(methodName, new Class[]{paramClazz1, paramClazz2});
method.invoke();

3)¡¢·´ÉäÀàµÄ¹¹Ô캯Êý£º

Constructor con = clazz.getConstructor(new Class[]{paramClazz1, paramClazz2,...})
con.newInstance(params...)

4)¡¢·´ÉäÀàµÄÊôÐÔ£º

Field field = clazz.getField(fieldName);
field.setAccessible(true);
field.setObject(value);

»ñÈ¡ÁË×Ö½ÚÂëÎļþ¶ÔÏóºó£¬×îÖÕ¶¼ÐèÒª´´½¨Ö¸¶¨ÀàµÄ¶ÔÏó£º

´´½¨¶ÔÏóµÄÁ½ÖÖ·½Ê½(Æäʵ¾ÍÊǶÔÏóÔÚ½øÐÐʵÀý»¯Ê±µÄ³õʼ»¯·½Ê½)£º

1£¬µ÷ÓÿղÎÊýµÄ¹¹Ô캯Êý£ºÊ¹ÓÃÁËClassÀàÖеÄnewInstance()·½·¨¡£

2£¬µ÷Óôø²ÎÊýµÄ¹¹Ô캯Êý£ºÏÈÒª»ñȡָ¶¨²ÎÊýÁбíµÄ¹¹Ô캯Êý¶ÔÏó£¬È»ºóͨ¹ý¸Ã¹¹Ô캯ÊýµÄ¶ÔÏóµÄnewInstance(ʵ¼Ê²ÎÊý) ½øÐжÔÏóµÄ³õʼ»¯¡£

×ÛÉÏËùÊö£¬µÚ¶þÖÖ·½Ê½£¬±ØÐëÒªÏÈÃ÷È·¾ßÌåµÄ¹¹Ô캯ÊýµÄ²ÎÊýÀàÐÍ£¬²»±ãÓÚÀ©Õ¹¡£ËùÒÔÒ»°ãÇé¿öÏ£¬±»·´ÉäµÄÀ࣬ÄÚ²¿Í¨³£¶¼»áÌṩһ¸ö¹«ÓеĿղÎÊýµÄ¹¹Ô캯Êý¡£

// ÈçºÎÉú³É»ñÈ¡µ½×Ö½ÚÂëÎļþ¶ÔÏóµÄʵÀý¶ÔÏó¡£
Class clazz = Class.forName("cn.itcast.bean.Person");//Àà¼ÓÔØ
// Ö±½Ó»ñµÃÖ¸¶¨µÄÀàÐÍ
clazz = Person.class;
// ¸ù¾Ý¶ÔÏó»ñµÃÀàÐÍ
Object obj = new Person("zhangsan", 19);
clazz = obj.getClass();
Object obj = clazz.newInstance();//¸ÃʵÀý»¯¶ÔÏóµÄ·½·¨µ÷ÓþÍÊÇÖ¸¶¨ÀàÖеĿղÎÊý¹¹Ô캯Êý£¬¸ø´´½¨¶ÔÏó½øÐгõʼ»¯¡£µ±Ö¸¶¨ÀàÖÐûÓпղÎÊý¹¹Ô캯Êýʱ£¬¸ÃÈçºÎ´´½¨¸ÃÀà¶ÔÏóÄØ£¿Çë¿´method_2();
public static void method_2() throws Exception {
Class clazz = Class.forName("cn.itcast.bean.Person");
//¼ÈÈ»ÀàÖÐûÓпղÎÊýµÄ¹¹Ô캯Êý,ÄÇôֻÓлñȡָ¶¨²ÎÊýµÄ¹¹Ô캯Êý,Óøú¯ÊýÀ´½øÐÐʵÀý»¯¡£
//»ñȡһ¸ö´ø²ÎÊýµÄ¹¹ÔìÆ÷¡£
Constructor constructor = clazz.getConstructor(String.class,int.class);
//ÏëÒª¶Ô¶ÔÏó½øÐгõʼ»¯£¬Ê¹Óù¹ÔìÆ÷µÄ·½·¨newInstance();
Object obj = constructor.newInstance("zhagnsan",30);
//»ñÈ¡ËùÓй¹ÔìÆ÷¡£
Constructor[] constructors = clazz.getConstructors();//Ö»°üº¬¹«¹²µÄ
constructors = clazz.getDeclaredConstructors();//°üº¬Ë½ÓеÄ
for(Constructor con : constructors) {
System.out.println(con);
}
}

·´ÉäÖ¸¶¨ÀàÖеķ½·¨£º

//»ñÈ¡ÀàÖÐËùÓеķ½·¨¡£
public static void method_1() throws Exception {
Class clazz = Class.forName("cn.itcast.bean.Person");
Method[] methods = clazz.getMethods();//»ñÈ¡µÄÊǸÃÀàÖеĹ«Óз½·¨ºÍ¸¸ÀàÖеĹ«Óз½·¨¡£
methods = clazz.getDeclaredMethods();//»ñÈ¡±¾ÀàÖеķ½·¨£¬°üº¬Ë½Óз½·¨¡£
for(Method method : methods) {
System.out.println(method);
}
}
//»ñȡָ¶¨·½·¨£»
public static void method_2() throws Exception {
Class clazz = Class.forName("cn.itcast.bean.Person");
//»ñȡָ¶¨Ãû³ÆµÄ·½·¨¡£
Method method = clazz.getMethod("show", int.class,String.class);
//ÏëÒªÔËÐÐÖ¸¶¨·½·¨£¬µ±È»ÊÇ·½·¨¶ÔÏó×îÇå³þ£¬ÎªÁËÈ÷½·¨ÔËÐУ¬µ÷Ó÷½·¨¶ÔÏóµÄinvoke·½·¨¼´¿É£¬µ«ÊÇ·½·¨ÔËÐбØÐëÒªÃ÷È·ËùÊôµÄ¶ÔÏóºÍ¾ßÌåµÄʵ¼Ê²ÎÊý¡£
Object obj = clazz.newInstance();
method.invoke(obj, 39,"hehehe");//Ö´ÐÐÒ»¸ö·½·¨
}
//ÏëÒªÔËÐÐ˽Óз½·¨¡£
public static void method_3() throws Exception {
Class clazz = Class.forName("cn.itcast.bean.Person");
//ÏëÒª»ñȡ˽Óз½·¨¡£±ØÐëÓÃgetDeclearMethod();
Method method = clazz.getDeclaredMethod("method", null);
// ˽Óз½·¨²»ÄÜÖ±½Ó·ÃÎÊ£¬ÒòΪȨÏÞ²»¹»¡£·ÇÒª·ÃÎÊ£¬¿ÉÒÔͨ¹ý±©Á¦µÄ·½Ê½¡£
method.setAccessible(true);//Ò»°ãºÜÉÙÓã¬ÒòΪ˽ÓоÍÊÇÒþ²ØÆðÀ´£¬ËùÒÔ¾¡Á¿²»Òª·ÃÎÊ¡£
}
//·´É侲̬·½·¨¡£
public static void method_4() throws Exception {
Class clazz = Class.forName("cn.itcast.bean.Person");<
Method method = clazz.getMethod("function",null);
method.invoke(null,null);
}
   
2815 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö