Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú ¹ØÓÚJavaÕ»Óë¶ÑµÄ˼¿¼

¹ØÓÚJavaÕ»Óë¶ÑµÄ˼¿¼

ÕªÒª: Õ»(stack)Óë¶Ñ(heap)¶¼ÊÇJavaÓÃÀ´ÔÚRamÖдæ·ÅÊý¾ÝµÄµØ·½
¡¡¡¡1. Õ»(stack)Óë¶Ñ(heap)¶¼ÊÇJavaÓÃÀ´ÔÚRamÖдæ·ÅÊý¾ÝµÄµØ·½¡£ÓëC++²»Í¬£¬Java×Ô¶¯¹ÜÀíÕ»ºÍ¶Ñ£¬³ÌÐòÔ±²»ÄÜÖ±½ÓµØÉèÖÃÕ»»ò¶Ñ¡£

¡¡¡¡2. Õ»µÄÓÅÊÆÊÇ£¬´æÈ¡ËٶȱȶÑÒª¿ì£¬½ö´ÎÓÚÖ±½ÓλÓÚCPUÖеļĴæÆ÷¡£µ«È±µãÊÇ£¬´æÔÚÕ»ÖеÄÊý¾Ý´óСÓëÉú´æÆÚ±ØÐëÊÇÈ·¶¨µÄ£¬È±·¦Áé»îÐÔ¡£ÁíÍ⣬ջÊý¾Ý¿ÉÒÔ¹²Ïí£¬Ïê¼ûµÚ3µã¡£¶ÑµÄÓÅÊÆÊÇ¿ÉÒÔ¶¯Ì¬µØ·ÖÅäÄÚ´æ´óС£¬Éú´æÆÚÒ²²»±ØÊÂÏȸæËß±àÒëÆ÷£¬JavaµÄÀ¬»øÊÕ¼¯Æ÷»á×Ô¶¯ÊÕ×ßÕâЩ²»ÔÙʹÓõÄÊý¾Ý¡£µ«È±µãÊÇ£¬ÓÉÓÚÒªÔÚÔËÐÐʱ¶¯Ì¬·ÖÅäÄڴ棬´æÈ¡ËٶȽÏÂý¡£

¡¡¡¡3. JavaÖеÄÊý¾ÝÀàÐÍÓÐÁ½ÖÖ¡£

¡¡¡¡Ò»ÖÖÊÇ»ù±¾ÀàÐÍ(primitive types), ¹²ÓÐ8ÖÖ£¬¼´int, short, long, byte, float, double, boolean, char(×¢Ò⣬²¢Ã»ÓÐstringµÄ»ù±¾ÀàÐÍ)¡£ÕâÖÖÀàÐ͵Ķ¨ÒåÊÇͨ¹ýÖîÈçint a = 3; long b = 255L;µÄÐÎʽÀ´¶¨ÒåµÄ£¬³ÆΪ×Ô¶¯±äÁ¿¡£ÖµµÃ×¢ÒâµÄÊÇ£¬×Ô¶¯±äÁ¿´æµÄÊÇ×ÖÃæÖµ£¬²»ÊÇÀàµÄʵÀý£¬¼´²»ÊÇÀàµÄÒýÓã¬ÕâÀﲢûÓÐÀàµÄ´æÔÚ¡£Èçint a = 3; ÕâÀïµÄaÊÇÒ»¸öÖ¸ÏòintÀàÐ͵ÄÒýÓã¬Ö¸Ïò3Õâ¸ö×ÖÃæÖµ¡£ÕâЩ×ÖÃæÖµµÄÊý¾Ý£¬ÓÉÓÚ´óС¿ÉÖª£¬Éú´æÆÚ¿ÉÖª(ÕâЩ×ÖÃæÖµ¹Ì¶¨¶¨ÒåÔÚij¸ö³ÌÐò¿éÀïÃ棬³ÌÐò¿éÍ˳öºó£¬×Ö¶ÎÖµ¾ÍÏûʧÁË)£¬³öÓÚ×·ÇóËٶȵÄÔ­Òò£¬¾Í´æÔÚÓÚÕ»ÖС£

¡¡¡¡ÁíÍ⣬ջÓÐÒ»¸öºÜÖØÒªµÄÌØÊâÐÔ£¬¾ÍÊÇ´æÔÚÕ»ÖеÄÊý¾Ý¿ÉÒÔ¹²Ïí¡£¼ÙÉèÎÒÃÇͬʱ¶¨Ò壺

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>int a = 3;
int b = 3£»</td></tr></table>
¡¡¡¡±àÒëÆ÷ÏÈ´¦Àíint a = 3£»Ê×ÏÈËü»áÔÚÕ»Öд´½¨Ò»¸ö±äÁ¿ÎªaµÄÒýÓã¬È»ºó²éÕÒÓÐûÓÐ×ÖÃæֵΪ3µÄµØÖ·£¬Ã»ÕÒµ½£¬¾Í¿ª±ÙÒ»¸ö´æ·Å3Õâ¸ö×ÖÃæÖµµÄµØÖ·£¬È»ºó½«aÖ¸Ïò3µÄµØÖ·¡£½Ó×Å´¦Àíint b = 3£»ÔÚ´´½¨ÍêbµÄÒýÓñäÁ¿ºó£¬ÓÉÓÚÔÚÕ»ÖÐÒѾ­ÓÐ3Õâ¸ö×ÖÃæÖµ£¬±ã½«bÖ±½ÓÖ¸Ïò3µÄµØÖ·¡£ÕâÑù£¬¾Í³öÏÖÁËaÓëbͬʱ¾ùÖ¸Ïò3µÄÇé¿ö¡£

¡¡¡¡Ìرð×¢ÒâµÄÊÇ£¬ÕâÖÖ×ÖÃæÖµµÄÒýÓÃÓëÀà¶ÔÏóµÄÒýÓò»Í¬¡£¼Ù¶¨Á½¸öÀà¶ÔÏóµÄÒýÓÃͬʱָÏòÒ»¸ö¶ÔÏó£¬Èç¹ûÒ»¸ö¶ÔÏóÒýÓñäÁ¿ÐÞ¸ÄÁËÕâ¸ö¶ÔÏóµÄÄÚ²¿×´Ì¬£¬ÄÇôÁíÒ»¸ö¶ÔÏóÒýÓñäÁ¿Ò²¼´¿Ì·´Ó³³öÕâ¸ö±ä»¯¡£Ïà·´£¬Í¨¹ý×ÖÃæÖµµÄÒýÓÃÀ´ÐÞ¸ÄÆäÖµ£¬²»»áµ¼ÖÂÁíÒ»¸öÖ¸Ïò´Ë×ÖÃæÖµµÄÒýÓõÄÖµÒ²¸úןıäµÄÇé¿ö¡£ÈçÉÏÀý£¬ÎÒÃǶ¨ÒåÍêaÓëbµÄÖµºó£¬ÔÙÁîa=4£»ÄÇô£¬b²»»áµÈÓÚ4£¬»¹ÊǵÈÓÚ3¡£ÔÚ±àÒëÆ÷ÄÚ²¿£¬Óöµ½a=4£»Ê±£¬Ëü¾Í»áÖØÐÂËÑË÷Õ»ÖÐÊÇ·ñÓÐ4µÄ×ÖÃæÖµ£¬Èç¹ûûÓУ¬ÖØпª±ÙµØÖ·´æ·Å4µÄÖµ£»Èç¹ûÒѾ­ÓÐÁË£¬ÔòÖ±½Ó½«aÖ¸ÏòÕâ¸öµØÖ·¡£Òò´ËaÖµµÄ¸Ä±ä²»»áÓ°Ïìµ½bµÄÖµ¡£

¡¡¡¡ÁíÒ»ÖÖÊÇ°ü×°ÀàÊý¾Ý£¬ÈçInteger, String, DoubleµÈ½«ÏàÓ¦µÄ»ù±¾Êý¾ÝÀàÐÍ°ü×°ÆðÀ´µÄÀà¡£ÕâЩÀàÊý¾ÝÈ«²¿´æÔÚÓÚ¶ÑÖУ¬JavaÓÃnew()Óï¾äÀ´ÏÔʾµØ¸æËß±àÒëÆ÷£¬ÔÚÔËÐÐʱ²Å¸ù¾ÝÐèÒª¶¯Ì¬´´½¨£¬Òò´Ë±È½ÏÁé»î£¬µ«È±µãÊÇÒªÕ¼Óøü¶àµÄʱ¼ä¡£ 4. StringÊÇÒ»¸öÌØÊâµÄ°ü×°ÀàÊý¾Ý¡£¼´¿ÉÒÔÓÃString str = new String("abc");µÄÐÎʽÀ´´´½¨£¬Ò²¿ÉÒÔÓÃString str = "abc"£»µÄÐÎʽÀ´´´½¨(×÷Ϊ¶Ô±È£¬ÔÚJDK 5.0֮ǰ£¬Äã´Óδ¼û¹ýInteger i = 3;µÄ±í´ïʽ£¬ÒòΪÀàÓë×ÖÃæÖµÊDz»ÄÜͨÓõģ¬³ýÁËString¡£¶øÔÚJDK 5.0ÖУ¬ÕâÖÖ±í´ïʽÊÇ¿ÉÒԵģ¡ÒòΪ±àÒëÆ÷ÔÚºǫ́½øÐÐInteger i = new Integer(3)µÄת»»)¡£Ç°ÕßÊǹ淶µÄÀàµÄ´´½¨¹ý³Ì£¬¼´ÔÚJavaÖУ¬Ò»Çж¼ÊǶÔÏ󣬶ø¶ÔÏóÊÇÀàµÄʵÀý£¬È«²¿Í¨¹ýnew()µÄÐÎʽÀ´´´½¨¡£JavaÖеÄÓÐЩÀ࣬ÈçDateFormatÀ࣬¿ÉÒÔͨ¹ý¸ÃÀàµÄgetInstance()·½·¨À´·µ»ØÒ»¸öд´½¨µÄÀ࣬ËƺõÎ¥·´ÁË´ËÔ­Ôò¡£Æäʵ²»È»¡£¸ÃÀàÔËÓÃÁ˵¥ÀýģʽÀ´·µ»ØÀàµÄʵÀý£¬Ö»²»¹ýÕâ¸öʵÀýÊÇÔÚ¸ÃÀàÄÚ²¿Í¨¹ýnew()À´´´½¨µÄ£¬¶øgetInstance()ÏòÍⲿÒþ²ØÁË´Ëϸ½Ú¡£ÄÇΪʲôÔÚString str = "abc"£»ÖУ¬²¢Ã»ÓÐͨ¹ýnew()À´´´½¨ÊµÀý£¬ÊDz»ÊÇÎ¥·´ÁËÉÏÊöÔ­Ôò£¿ÆäʵûÓС£

¡¡¡¡5. ¹ØÓÚString str = "abc"µÄÄÚ²¿¹¤×÷¡£JavaÄÚ²¿½«´ËÓï¾äת»¯ÎªÒÔϼ¸¸ö²½Ö裺

¡¡¡¡(1)Ïȶ¨ÒåÒ»¸öÃûΪstrµÄ¶ÔStringÀàµÄ¶ÔÏóÒýÓñäÁ¿£ºString str£»

¡¡¡¡(2)ÔÚÕ»ÖвéÕÒÓÐûÓдæ·ÅֵΪ"abc"µÄµØÖ·£¬Èç¹ûûÓУ¬Ôò¿ª±ÙÒ»¸ö´æ·Å×ÖÃæÖ µÎª"abc"µÄµØÖ·£¬½Ó×Å´´½¨Ò»¸öеÄStringÀàµÄ¶ÔÏóo£¬²¢½«oµÄ×Ö·û´®ÖµÖ¸ÏòÕâ¸öµØÖ·£¬¶øÇÒÔÚÕ»ÖÐÕâ¸öµØÖ·ÅԱ߼ÇÏÂÕâ¸öÒýÓõĶÔÏóo¡£Èç¹ûÒѾ­ÓÐÁËֵΪ"abc"µÄµØÖ·£¬Ôò²éÕÒ¶ÔÏóo£¬²¢·µ»ØoµÄµØÖ·¡£

¡¡¡¡(3)½«strÖ¸Ïò¶ÔÏóoµÄµØÖ·¡£

¡¡¡¡ÖµµÃ×¢ÒâµÄÊÇ£¬Ò»°ãStringÀàÖÐ×Ö·û´®Öµ¶¼ÊÇÖ±½Ó´æÖµµÄ¡£µ«ÏñString str = "abc"£»ÕâÖÖ³¡ºÏÏ£¬Æä×Ö·û´®ÖµÈ´ÊDZ£´æÁËÒ»¸öÖ¸Ïò´æÔÚÕ»ÖÐÊý¾ÝµÄÒýÓã¡

¡¡¡¡ÎªÁ˸üºÃµØ˵Ã÷Õâ¸öÎÊÌ⣬ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔϵļ¸¸ö´úÂë½øÐÐÑéÖ¤¡£

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); //true</td></tr></table>
¡¡¡¡×¢Ò⣬ÎÒÃÇÕâÀï²¢²»ÓÃstr1.equals(str2)£»µÄ·½Ê½£¬ÒòΪÕ⽫±È½ÏÁ½¸ö×Ö·û´®µÄÖµÊÇ·ñÏàµÈ¡£==ºÅ£¬¸ù¾ÝJDKµÄ˵Ã÷£¬Ö»ÓÐÔÚÁ½¸öÒýÓö¼Ö¸ÏòÁËͬһ¸ö¶ÔÏóʱ²Å·µ»ØÕæÖµ¡£¶øÎÒÃÇÔÚÕâÀïÒª¿´µÄÊÇ£¬str1Óëstr2ÊÇ·ñ¶¼Ö¸ÏòÁËͬһ¸ö¶ÔÏó¡£
½á¹û˵Ã÷£¬JVM´´½¨ÁËÁ½¸öÒýÓÃstr1ºÍstr2£¬µ«Ö»´´½¨ÁËÒ»¸ö¶ÔÏ󣬶øÇÒÁ½¸öÒýÓö¼Ö¸ÏòÁËÕâ¸ö¶ÔÏó¡£

¡¡¡¡ÎÒÃÇÔÙÀ´¸ü½øÒ»²½£¬½«ÒÔÉÏ´úÂë¸Ä³É£º

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>String str1 = "abc";
String str2 = "abc";
str1 = "bcd";
System.out.println(str1 + "," + str2); //bcd, abc
System.out.println(str1==str2); //false</td></tr></table>
¡¡¡¡Õâ¾ÍÊÇ˵£¬¸³ÖµµÄ±ä»¯µ¼ÖÂÁËÀà¶ÔÏóÒýÓõı仯£¬str1Ö¸ÏòÁËÁíÍâÒ»¸öжÔÏ󣡶østr2ÈÔ¾ÉÖ¸ÏòÔ­À´µÄ¶ÔÏó¡£ÉÏÀýÖУ¬µ±ÎÒÃǽ«str1µÄÖµ¸ÄΪ"bcd"ʱ£¬JVM·¢ÏÖÔÚÕ»ÖÐûÓдæ·Å¸ÃÖµµÄµØÖ·£¬±ã¿ª±ÙÁËÕâ¸öµØÖ·£¬²¢´´½¨ÁËÒ»¸öеĶÔÏó£¬Æä×Ö·û´®µÄÖµÖ¸ÏòÕâ¸öµØÖ·¡£

¡¡¡¡ÊÂʵÉÏ£¬StringÀà±»Éè¼Æ³ÉΪ²»¿É¸Ä±ä(immutable)µÄÀà¡£Èç¹ûÄãÒª¸Ä±äÆäÖµ£¬¿ÉÒÔ£¬µ«JVMÔÚÔËÐÐʱ¸ù¾ÝÐÂÖµÇÄÇÄ´´½¨ÁËÒ»¸öжÔÏó£¬È»ºó½«Õâ¸ö¶ÔÏóµÄµØÖ··µ»Ø¸øÔ­À´ÀàµÄÒýÓá£Õâ¸ö´´½¨¹ý³ÌËä˵ÊÇÍêÈ«×Ô¶¯½øÐеģ¬µ«Ëü±Ï¾¹Õ¼ÓÃÁ˸ü¶àµÄʱ¼ä¡£ÔÚ¶Ôʱ¼äÒªÇó±È½ÏÃô¸ÐµÄ»·¾³ÖУ¬»á´øÓÐÒ»¶¨µÄ²»Á¼Ó°Ïì¡£

¡¡¡¡ÔÙÐÞ¸ÄÔ­À´´úÂ룺

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>String str1 = "abc";
String str2 = "abc";

str1 = "bcd";

String str3 = str1;
System.out.println(str3); //bcd

String str4 = "bcd";
System.out.println(str1 == str4); //true</td></tr></table>
¡¡¡¡str3Õâ¸ö¶ÔÏóµÄÒýÓÃÖ±½ÓÖ¸Ïòstr1ËùÖ¸ÏòµÄ¶ÔÏó(×¢Ò⣬str3²¢Ã»Óд´½¨Ð¶ÔÏó)¡£µ±str1¸ÄÍêÆäÖµºó£¬ÔÙ´´½¨Ò»¸öStringµÄÒýÓÃstr4£¬²¢Ö¸ÏòÒòstr1ÐÞ¸ÄÖµ¶ø´´½¨µÄеĶÔÏ󡣿ÉÒÔ·¢ÏÖ£¬Õâ»Østr4ҲûÓд´½¨ÐµĶÔÏ󣬴ӶøÔÙ´ÎʵÏÖÕ»ÖÐÊý¾ÝµÄ¹²Ïí¡£

¡¡¡¡ÎÒÃÇÔÙ½Ó×Å¿´ÒÔϵĴúÂë¡£

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>String str1 = new String("abc");
String str2 = "abc";
System.out.println(str1==str2); //false</td></tr></table>
¡¡¡¡´´½¨ÁËÁ½¸öÒýÓᣴ´½¨ÁËÁ½¸ö¶ÔÏó¡£Á½¸öÒýÓ÷ֱðÖ¸Ïò²»Í¬µÄÁ½¸ö¶ÔÏó¡£

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>String str1 = "abc";
String str2 = new String("abc");
System.out.println(str1==str2); //false</td></tr></table>
¡¡¡¡´´½¨ÁËÁ½¸öÒýÓᣴ´½¨ÁËÁ½¸ö¶ÔÏó¡£Á½¸öÒýÓ÷ֱðÖ¸Ïò²»Í¬µÄÁ½¸ö¶ÔÏó¡£

¡¡¡¡ÒÔÉÏÁ½¶Î´úÂë˵Ã÷£¬Ö»ÒªÊÇÓÃnew()À´Ð½¨¶ÔÏóµÄ£¬¶¼»áÔÚ¶ÑÖд´½¨£¬¶øÇÒÆä×Ö·û´®Êǵ¥¶À´æÖµµÄ£¬¼´Ê¹ÓëÕ»ÖеÄÊý¾ÝÏàͬ£¬Ò²²»»áÓëÕ»ÖеÄÊý¾Ý¹²Ïí¡£

¡¡¡¡6. Êý¾ÝÀàÐÍ°ü×°ÀàµÄÖµ²»¿ÉÐ޸ġ£²»½ö½öÊÇStringÀàµÄÖµ²»¿ÉÐ޸ģ¬ËùÓеÄÊý¾ÝÀàÐÍ°ü×°À඼²»Äܸü¸ÄÆäÄÚ²¿µÄÖµ¡£ 7. ½áÂÛÓ뽨Ò飺

¡¡¡¡(1)ÎÒÃÇÔÚʹÓÃÖîÈçString str = "abc"£»µÄ¸ñʽ¶¨ÒåÀàʱ£¬×ÜÊÇÏ뵱ȻµØÈÏΪ£¬ÎÒÃÇ´´½¨ÁËStringÀàµÄ¶ÔÏóstr¡£µ£ÐÄÏÝÚ壡¶ÔÏó¿ÉÄܲ¢Ã»Óб»´´½¨£¡Î¨Ò»¿ÉÒԿ϶¨µÄÊÇ£¬Ö¸ÏòStringÀàµÄÒýÓñ»´´½¨ÁË¡£ÖÁÓÚÕâ¸öÒýÓõ½µ×ÊÇ·ñÖ¸ÏòÁËÒ»¸öеĶÔÏ󣬱ØÐë¸ù¾ÝÉÏÏÂÎÄÀ´¿¼ÂÇ£¬³ý·ÇÄãͨ¹ýnew()·½·¨À´ÏÔÒªµØ´´½¨Ò»¸öеĶÔÏó¡£Òò´Ë£¬¸üΪ׼ȷµÄ˵·¨ÊÇ£¬ÎÒÃÇ´´½¨ÁËÒ»¸öÖ¸ÏòStringÀàµÄ¶ÔÏóµÄÒýÓñäÁ¿str£¬Õâ¸ö¶ÔÏóÒýÓñäÁ¿Ö¸ÏòÁËij¸öֵΪ"abc"µÄStringÀà¡£ÇåÐѵØÈÏʶµ½ÕâÒ»µã¶ÔÅųý³ÌÐòÖÐÄÑÒÔ·¢ÏÖµÄbugÊǺÜÓаïÖúµÄ¡£

¡¡¡¡(2)ʹÓÃString str = "abc"£»µÄ·½Ê½£¬¿ÉÒÔÔÚÒ»¶¨³Ì¶ÈÉÏÌá¸ß³ÌÐòµÄÔËÐÐËٶȣ¬ÒòΪJVM»á×Ô¶¯¸ù¾ÝÕ»ÖÐÊý¾ÝµÄʵ¼ÊÇé¿öÀ´¾ö¶¨ÊÇ·ñÓбØÒª´´½¨Ð¶ÔÏ󡣶ø¶ÔÓÚString str = new String("abc")£»µÄ´úÂ룬ÔòÒ»¸ÅÔÚ¶ÑÖд´½¨Ð¶ÔÏ󣬶ø²»¹ÜÆä×Ö·û´®ÖµÊÇ·ñÏàµÈ£¬ÊÇ·ñÓбØÒª´´½¨Ð¶ÔÏ󣬴Ӷø¼ÓÖØÁ˳ÌÐòµÄ¸ºµ£¡£Õâ¸ö˼ÏëÓ¦¸ÃÊÇÏíԪģʽµÄ˼Ï룬µ«JDKµÄÄÚ²¿ÔÚÕâÀïʵÏÖÊÇ·ñÓ¦ÓÃÁËÕâ¸öģʽ£¬²»µÃ¶øÖª¡£

¡¡¡¡(3)µ±±È½Ï°ü×°ÀàÀïÃæµÄÊýÖµÊÇ·ñÏàµÈʱ£¬ÓÃequals()·½·¨£»µ±²âÊÔÁ½¸ö°ü×°ÀàµÄÒýÓÃÊÇ·ñÖ¸Ïòͬһ¸ö¶ÔÏóʱ£¬ÓÃ==¡£

¡¡¡¡(4)ÓÉÓÚStringÀàµÄimmutableÐÔÖÊ£¬µ±String±äÁ¿ÐèÒª¾­³£±ä»»Æäֵʱ£¬Ó¦¸Ã¿¼ÂÇʹÓÃStringBufferÀ࣬ÒÔÌá¸ß³ÌÐòЧÂÊ¡£



¡ü·µ»ØĿ¼
ǰһƪ: ½âÎöJavaÌåϵ½á¹¹¶ÔÐÅÏ¢°²È«µÄÖ§³Ö
ºóһƪ: ´óµÀÖÁ¼ò Java 23ÖÖģʽһµã¾Íͨ