Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ99²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ËùÓÐÊý¾Ý¶¼ÉèΪprivate£¬¿ÉÒÔ¿´µ½Ã»ÓÐÈκÎpublic¡¡·½·¨¶ÔÊý¾Ý×÷³öÐ޸ġ£ÊÂʵÉÏ£¬È·ÊµÐèÒªÐÞ¸ÄÒ»¸ö¶ÔÏó¡¡
µÄ·½·¨ÊÇquadruple£¨£©£¬µ«ËüµÄ×÷ÓÃÊÇн¨Ò»¸öImmutable1¡¡¶ÔÏ󣬳õʼ¶ÔÏóÔòÊÇÔ·âδ¶¯µÄ¡£¡¡¡¡
·½·¨¡¡f£¨£©ÐèҪȡµÃÒ»¸ö¡¡Immutable1¶ÔÏ󣬲¢¶ÔÆä²ÉÈ¡²»Í¬µÄ²Ù×÷£¬¶ø¡¡main£¨£©µÄÊä³öÏÔʾ³öûÓжÔx¡¡×÷ÈκÎÐÞ¡¡
¸Ä¡£Òò´Ë£¬x¡¡¶ÔÏó¿É±ðÃû´¦ÀíÐí¶à´Î£¬²»»áÔì³ÉÈκÎÉ˺¦£¬ÒòΪ¸ù¾Ý¡¡Immutable1ÀàµÄÉè¼Æ£¬ËüÄܱ£Ö¤¶ÔÏ󲻡¡
±»¸Ä¶¯¡£¡¡¡¡
12¡£4¡£2¡¡¡¡¡°Ò»³É²»±ä¡±µÄ±×¶Ë¡¡¡¡
´Ó±íÃæ¿´£¬²»±äÀàµÄ½¨Á¢ËƺõÊÇÒ»¸öºÃ·½°¸¡£µ«ÊÇ£¬Ò»µ©ÕæµÄÐèÒªÄÇÖÖÐÂÀàÐ͵ÄÒ»¸öÐ޸ĵĶÔÏ󣬾ͱØÐëÐÁ¡¡
¿àµØ½øÐÐжÔÏóµÄ´´½¨¹¤×÷£¬Í¬Ê±»¹ÓпÉÄÜÉæ¼°¸üƵ·±µÄÀ¬»øÊÕ¼¯¡£¶ÔÓÐЩÀàÀ´Ëµ£¬Õâ¸öÎÊÌâ²¢²»ÊǺܴ󡣡¡
µ«¶ÔÆäËûÀàÀ´Ëµ£¨±ÈÈç¡¡String¡¡Àࣩ£¬ÕâÒ»·½°¸µÄ´ú¼ÛÏÔµÃÌ«¸ßÁË¡£¡¡¡¡
Ϊ½â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇ¿ÉÒÔ´´½¨Ò»¸ö¡°Í¬Ö¾¡±À࣬²¢Ê¹ÆäÄܹ»Ð޸ġ£ÒÔºóÖ»ÒªÉæ¼°´óÁ¿µÄÐ޸Ť×÷£¬¾Í¿É»»¡¡
ΪʹÓÃÄÜÐ޸ĵÄͬ־Àà¡£ÍêÊÂÒÔºó£¬ÔÙÇл»»Ø²»¿É±äµÄÀà¡£¡¡¡¡
Òò´Ë£¬ÉÏÀý¿É¸Ä³ÉÏÂÃæÕâ¸öÑù×Ó£º¡¡¡¡
¡¡¡¡
//£º¡¡Immutable2¡£java¡¡¡¡
//¡¡A¡¡panion¡¡class¡¡for¡¡making¡¡changes¡¡¡¡
//¡¡to¡¡immutable¡¡objects¡£¡¡¡¡
¡¡¡¡
class¡¡Mutable¡¡£û¡¡¡¡
¡¡¡¡private¡¡int¡¡data£»¡¡¡¡
¡¡¡¡public¡¡Mutable£¨int¡¡initVal£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡data¡¡=¡¡initVal£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Mutable¡¡add£¨int¡¡x£©¡¡£û¡¡¡¡¡¡
¡¡¡¡¡¡¡¡data¡¡£«=¡¡x£»¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡this£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Mutable¡¡multiply£¨int¡¡x£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡data¡¡*=¡¡x£»¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡this£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Immutable2¡¡makeImmutable2£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡new¡¡Immutable2£¨data£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡371¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡373¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
public¡¡class¡¡Immutable2¡¡£û¡¡¡¡
¡¡¡¡private¡¡int¡¡data£»¡¡¡¡
¡¡¡¡public¡¡Immutable2£¨int¡¡initVal£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡data¡¡=¡¡initVal£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡int¡¡read£¨£©¡¡£û¡¡return¡¡data£»¡¡£ý¡¡¡¡
¡¡¡¡public¡¡boolean¡¡nonzero£¨£©¡¡£û¡¡return¡¡data¡¡£¡=¡¡0£»¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Immutable2¡¡add£¨int¡¡x£©¡¡£û¡¡¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡new¡¡Immutable2£¨data¡¡£«¡¡x£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Immutable2¡¡multiply£¨int¡¡x£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡new¡¡Immutable2£¨data¡¡*¡¡x£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Mutable¡¡makeMutable£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡new¡¡Mutable£¨data£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡Immutable2¡¡modify1£¨Immutable2¡¡y£©£û¡¡¡¡
¡¡¡¡¡¡¡¡Immutable2¡¡val¡¡=¡¡y¡£add£¨12£©£»¡¡¡¡
¡¡¡¡¡¡¡¡val¡¡=¡¡val¡£multiply£¨3£©£»¡¡¡¡
¡¡¡¡¡¡¡¡val¡¡=¡¡val¡£add£¨11£©£»¡¡¡¡
¡¡¡¡¡¡¡¡val¡¡=¡¡val¡£multiply£¨2£©£»¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡val£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡//¡¡This¡¡produces¡¡the¡¡same¡¡result£º¡¡¡¡
¡¡¡¡public¡¡static¡¡Immutable2¡¡modify2£¨Immutable2¡¡y£©£û¡¡¡¡
¡¡¡¡¡¡¡¡Mutable¡¡m¡¡=¡¡y¡£makeMutable£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡m¡£add£¨12£©¡£multiply£¨3£©¡£add£¨11£©¡£multiply£¨2£©£»¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡m¡£makeImmutable2£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Immutable2¡¡i2¡¡=¡¡new¡¡Immutable2£¨47£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Immutable2¡¡r1¡¡=¡¡modify1£¨i2£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Immutable2¡¡r2¡¡=¡¡modify2£¨i2£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨i2¡¡=¡¡¡¨¡¡£«¡¡i2¡£read£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨r1¡¡=¡¡¡¨¡¡£«¡¡r1¡£read£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨r2¡¡=¡¡¡¨¡¡£«¡¡r2¡£read£¨£©£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ºÍÍù³£Ò»Ñù£¬Immutable2¡¡°üº¬µÄ·½·¨±£ÁôÁ˶ÔÏ󲻿ɱäµÄÌØÕ÷£¬Ö»ÒªÉæ¼°Ð޸ģ¬¾Í´´½¨ÐµĶÔÏó¡£Íê³ÉÕâЩ¡¡
²Ù×÷µÄÊÇadd£¨£©ºÍmultiply£¨£©·½·¨¡£Í¬Ö¾Àà½Ð×÷¡¡Mutable£¬ËüÒ²º¬ÓС¡add£¨£©ºÍ¡¡multiply£¨£©·½·¨¡£µ«ÕâЩ·½·¨¡¡
Äܹ»ÐÞ¸ÄMutable¡¡¶ÔÏ󣬶ø²»ÊÇн¨Ò»¸ö¡£³ý´ËÒÔÍ⣬Mutable¡¡µÄÒ»¸ö·½·¨¿ÉÓÃËüµÄÊý¾Ý²úÉúÒ»¸ö¡¡
Immutable2¶ÔÏ󣬷´Ö®ÒàÈ»¡£¡¡¡¡
Á½¸ö¾²Ì¬·½·¨modify1£¨£©ºÍ¡¡modify2£¨£©½Òʾ³ö»ñµÃͬÑù½á¹ûµÄÁ½ÖÖ²»Í¬·½·¨¡£ÔÚ¡¡modify1£¨£©ÖУ¬ËùÓй¤×÷¶¼ÊÇ¡¡
ÔÚ¡¡Immutable2¡¡ÀàÖÐÍê³ÉµÄ£¬ÎÒÃÇ¿É¿´µ½ÔÚ½ø³ÌÖд´½¨ÁËËĸöеġ¡Immutable2¡¡¶ÔÏ󣨶øÇÒÿ´ÎÖØзÖÅäÁË¡¡
val£¬Ç°Ò»¸ö¶ÔÏó¾Í³ÉΪÀ¬»ø£©¡£¡¡¡¡
ÔÚ·½·¨modify2£¨£©ÖУ¬¿É¿´µ½ËüµÄµÚÒ»¸öÐж¯ÊÇ»ñÈ¡¡¡Immutable2¡¡y£¬È»ºó´ÓÖÐÉú³ÉÒ»¸öMutable¡¡£¨ÀàËÆÓÚÇ°¡¡
Ãæ¶Ô¡¡clone£¨£©µÄµ÷Ó㬵«ÕâÒ»´Î´´½¨ÁËÒ»¸ö²»Í¬ÀàÐ͵ĶÔÏ󣩡£Ëæºó£¬ÓÃMutable¡¡¶ÔÏó½øÐдóÁ¿Ð޸IJÙ×÷£¬¡¡
ͬʱÓò»×Åн¨Ðí¶à¶ÔÏó¡£×îºó£¬ËüÇл»»ØImmutable2¡£ÔÚÕâÀÎÒÃÇÖ»´´½¨ÁËÁ½¸öжÔÏó£¨Mutable¡¡ºÍ¡¡
Immutable2¡¡µÄ½á¹û£©£¬¶ø²»ÊÇËĸö¡£¡¡¡¡
ÕâÒ»·½·¨ÌرðÊʺÏÔÚÏÂÊö³¡ºÏÓ¦Ó㺡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡372¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡374¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£¨1£©¡¡ÐèÒª²»¿É±äµÄ¶ÔÏ󣬶øÇÒ¡¡¡¡
£¨2£©¡¡¾³£ÐèÒª½øÐдóÁ¿Ð޸ģ¬»òÕß¡¡¡¡
£¨3£©¡¡´´½¨ÐµIJ»±ä¶ÔÏó´ú¼ÛÌ«¸ß¡¡¡¡
12¡£4¡£3¡¡²»±ä×Ö´®¡¡¡¡
Çë¹Û²ìÏÂÊö´úÂ룺¡¡¡¡
¡¡¡¡
//£º¡¡Stringer¡£java¡¡¡¡
¡¡¡¡
public¡¡class¡¡Stringer¡¡£û¡¡¡¡
¡¡¡¡static¡¡String¡¡upcase£¨String¡¡s£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡s¡£toUpperCase£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡String¡¡q¡¡=¡¡new¡¡String£¨¡¨howdy¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨q£©£»¡¡//¡¡howdy¡¡¡¡
¡¡¡¡¡¡¡¡String¡¡qq¡¡=¡¡upcase£¨q£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨qq£©£»¡¡//¡¡HOWDY¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨q£©£»¡¡//¡¡howdy¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
q¡¡´«µÝ½øÈë¡¡upcase£¨£©Ê±£¬Ëüʵ¼ÊÊÇq¡¡µÄ¾ä±úµÄÒ»¸ö¸±±¾¡£¸Ã¾ä±úÁ¬½ÓµÄ¶ÔÏóʵ¼ÊÖ»ÔÚÒ»¸öͳһµÄÎïÀíλÖá¡
´¦¡£¾ä±úËÄ´¦´«µÝµÄʱºò£¬ËüµÄ¾ä±ú»áµÃµ½¸´ÖÆ¡£¡¡¡¡
Èô¹Û²ì¶Ôupcase£¨£©¡¡µÄ¶¨Ò壬»á·¢ÏÖ´«µÝ½øÈëµÄ¾ä±úÓÐÒ»¸öÃû×Ö¡¡s£¬¶øÇÒ¸ÃÃû×ÖÖ»ÓÐÔÚupcase£¨£©Ö´ÐÐÆÚ¼ä²Å»á¡¡
´æÔÚ¡£upcase£¨£©Íê³Éºó£¬±¾µØ¾ä±ú¡¡s¡¡±ã»áÏûʧ£¬¶ø¡¡upcase£¨£©·µ»Ø½á¹û¡ª¡ª»¹ÊÇÔÀ´ÄǸö×Ö´®£¬Ö»ÊÇËùÓÐ×Ö·û¡¡
¶¼±ä³ÉÁË´óд¡£µ±È»£¬Ëü·µ»ØµÄʵ¼ÊÊǽá¹ûµÄÒ»¸ö¾ä±ú¡£µ«Ëü·µ»ØµÄ¾ä±ú×îÖÕÊÇΪһ¸öжÔÏóµÄ£¬Í¬Ê±ÔÀ´¡¡
µÄq¡¡²¢Î´·¢Éú±ä»¯¡£ËùÓÐÕâЩÊÇÈçºÎ·¢ÉúµÄÄØ£¿¡¡¡¡
¡¡¡¡
1¡£¡¡Òþʽ³£Êý¡¡¡¡
ÈôʹÓÃÏÂÊöÓï¾ä£º¡¡¡¡
String¡¡s¡¡=¡¡¡¨asdf¡¨£»¡¡¡¡
String¡¡x¡¡=¡¡Stringer¡£upcase£¨s£©£»¡¡¡¡
ÄÇôÕæµÄÏ£Íûupcase£¨£©·½·¨¸Ä±ä×Ô±äÁ¿»òÕß²ÎÊýÂð£¿ÎÒÃÇͨ³£ÊDz»Ô¸ÒâµÄ£¬ÒòΪ×÷ΪÌṩ¸ø·½·¨µÄÒ»ÖÖÐÅ¡¡
Ï¢£¬×Ô±äÁ¿Ò»°ãÊÇÄøø´úÂëµÄ¶ÁÕß¿´µÄ£¬¶ø²»ÊÇÈÃËûÃÇÐ޸ġ£ÕâÊÇÒ»¸öÏ൱ÖØÒªµÄ±£Ö¤£¬ÒòΪËüʹ´úÂë¸üÒס¡
±àдºÍÀí½â¡£¡¡¡¡
ΪÁËÔÚC£«£«ÖÐʵÏÖÕâÒ»±£Ö¤£¬ÐèÒªÒ»¸öÌØÊâ¹Ø¼ü×ֵİïÖú£ºconst¡£ÀûÓÃÕâ¸ö¹Ø¼ü×Ö£¬³ÌÐòÔ±¿ÉÒÔ±£Ö¤Ò»¸ö¾ä¡¡
±ú£¨C£«£«½Ð¡°Ö¸Õ롱»òÕß¡°ÒýÓá±£©²»»á±»ÓÃÀ´ÐÞ¸ÄÔʼµÄ¶ÔÏó¡£µ«ÕâÑùÒ»À´£¬C£«£«³ÌÐòÔ±ÐèÒªÓÃÐļÇסÔÚËù¡¡
Óеط½¶¼Ê¹ÓÃconst¡£ÕâÏÔÈ»Ò×ʹÈË»ìÏý£¬Ò²²»ÈÝÒ×¼Çס¡£¡¡¡¡
¡¡¡¡
2¡£¡¡¸²¸Ç¡¨£«¡¨ºÍStringBuffer¡¡¡¡
ÀûÓÃÇ°ÃæÌáµ½µÄ¼¼Êõ£¬String¡¡ÀàµÄ¶ÔÏó±»Éè¼Æ³É¡¡¡°²»¿É±ä¡±¡£Èô²éÔÄÁª»úÎĵµÖйØÓÚString¡¡ÀàµÄÄÚÈÝ£¨±¾¡¡
ÕÂÉÔºó»¹Òª×ܽáËü£©£¬¾Í»á·¢ÏÖÀàÖÐÄܹ»Ð޸ġ¡String¡¡µÄÿ¸ö·½·¨Êµ¼Ê¶¼´´½¨ºÍ·µ»ØÁËÒ»¸öոеÄString¡¡¶Ô¡¡
Ïó£¬Ð¶ÔÏóÀï°üº¬ÁËÐ޸ĹýµÄÐÅÏ¢¡ª¡ªÔÀ´µÄ¡¡String¡¡ÊÇÔ·âδ¶¯µÄ¡£Òò´Ë£¬Java¡¡ÀïûÓÐÓëC£«£«µÄconst¡¡¶ÔÓ¦¡¡
µÄÌØÐÔ¿ÉÓÃÀ´ÈñàÒëÆ÷Ö§³Ö¶ÔÏóµÄ²»¿É±äÄÜÁ¦¡£ÈôÏë»ñµÃÕâÒ»ÄÜÁ¦£¬¿ÉÒÔ×ÔÐÐÉèÖ㬾ÍÏóString¡¡ÄÇÑù¡£¡¡¡¡
ÓÉÓÚString¡¡¶ÔÏóÊDz»¿É±äµÄ£¬ËùÒÔÄܹ»¸ù¾ÝÇé¿ö¶ÔÒ»¸öÌض¨µÄ¡¡String¡¡½øÐжà´Î±ðÃû´¦Àí¡£ÒòΪËüÊÇÖ»¶Á¡¡
µÄ£¬ËùÒÔÒ»¸ö¾ä±ú²»¿ÉÄÜ»á¸Ä±äһЩ»áÓ°ÏìÆäËû¾ä±úµÄ¶«Î÷¡£Òò´Ë£¬Ö»¶Á¶ÔÏó¿ÉÒԺܺõؽâ¾ö±ðÃûÎÊÌâ¡£¡¡¡¡
ͨ¹ýÐ޸IJúÉú¶ÔÏóµÄÒ»¸öոа汾£¬Ëƺõ¿ÉÒÔ½â¾öÐ޸ĶÔÏóʱµÄËùÓÐÎÊÌ⣬¾ÍÏó¡¡String¡¡ÄÇÑù¡£µ«¶ÔijЩ²Ù×÷¡¡
À´½²£¬ÕâÖÖ·½·¨µÄЧÂʲ¢²»¸ß¡£Ò»¸öµäÐ͵ÄÀý×Ó±ãÊÇΪString¡¡¶ÔÏ󸲸ǵÄÔËËã·û¡°£«¡±¡£¡°¸²¸Ç¡±Òâζ×ÅÔÚ¡¡
ÓëÒ»¸öÌض¨µÄÀàʹÓÃʱ£¬ËüµÄº¬ÒåÒÑ·¢ÉúÁ˱仯£¨ÓÃÓÚString¡¡µÄ¡°£«¡±ºÍ¡°£«=¡±ÊÇJava¡¡ÖÐÄܱ»¸²¸ÇµÄΨһÔË¡¡
Ëã·û£¬Java¡¡²»ÔÊÐí³ÌÐòÔ±¸²¸ÇÆäËûÈκÎÔËËã·û¡ª¡ª×¢Ê͢ܣ©¡£¡¡¡¡
¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡373¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡375¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¢Ü£ºC£«£«ÔÊÐí³ÌÐòÔ±ËæÒ⸲¸ÇÔËËã·û¡£ÓÉÓÚÕâͨ³£ÊÇÒ»¸ö¸´ÔӵĹý³Ì£¨²Î¼û¡¶Thinking¡¡in¡¡C£«£«¡·£¬Prentice
Hall¡¡ÓÚ¡¡1995¡¡Äê³ö°æ£©£¬ËùÒÔJava¡¡µÄÉè¼ÆÕßÈ϶¨ËüÊÇÒ»ÖÖ¡°Ôã¸â¡±µÄÌØÐÔ£¬¾ö¶¨²»ÔÚ¡¡Java¡¡ÖвÉÓᣵ«¾ßÓС¡
·íØÝÒâζµÄÊÇ£¬ÔËËã·ûµÄ¸²¸ÇÔÚJava¡¡ÖÐÒª±ÈÔÚC£«£«ÖÐÈÝÒ׵öࡣ¡¡¡¡
¡¡¡¡
Õë¶ÔString¡¡¶ÔÏóʹÓÃʱ£¬¡°£«¡±ÔÊÐíÎÒÃǽ«²»Í¬µÄ×Ö´®Á¬½ÓÆðÀ´£º¡¡¡¡
¡¡¡¡
String¡¡s¡¡=¡¡¡¨abc¡¨¡¡£«¡¡foo¡¡£«¡¡¡¨def¡¨¡¡£«¡¡Integer¡£toString£¨47£©£»¡¡¡¡
¡¡¡¡
¿ÉÒÔÏëÏó³öËü¡°¿ÉÄÜ¡±ÊÇÈçºÎ¹¤×÷µÄ£º×Ö´®¡¨abc¡¨¿ÉÒÔÓÐÒ»¸ö·½·¨append£¨£©£¬Ëüн¨ÁËÒ»¸ö×Ö´®£¬ÆäÖаüº¬¡¡
¡¨abc¡¨ÒÔ¼°foo¡¡µÄÄÚÈÝ£»Õâ¸öÐÂ×Ö´®È»ºóÔÙ´´½¨ÁíÒ»¸öÐÂ×Ö´®£¬ÔÚÆäÖÐÌí¼Ó¡¨def¡¨£»ÒÔ´ËÀàÍÆ¡£¡¡¡¡
ÕâÒ»ÉèÏëÊÇÐеÃͨµÄ£¬µ«ËüÒªÇó´´½¨´óÁ¿×Ö´®¶ÔÏó¡£¾¡¹Ü×îÖÕµÄÄ¿µÄÖ»ÊÇ»ñµÃ°üº¬ÁËËùÓÐÄÚÈݵÄÒ»¸öÐÂ×Ö¡¡
´®£¬µ«ÖмäÈ´ÒªÓõ½´óÁ¿×Ö´®¶ÔÏ󣬶øÇÒÒª²»¶ÏµØ½øÐÐÀ¬»øÊÕ¼¯¡£ÎÒ»³ÒÉ¡¡Java¡¡µÄÉè¼ÆÕßÊÇ·ñÏÈÊÔ¹ýÖÖ·½·¨¡¡
¡¡£¨ÕâÊÇÈí¼þ¿ª·¢µÄÒ»¸ö½Ìѵ¡ª¡ª³ý·Ç×Ô¼ºÊÔÊÔ´úÂ룬²¢ÈÃijЩ¶«Î÷ÔËÐÐÆðÀ´£¬·ñÔò²»¿ÉÄÜÕæÕýÁ˽âϵͳ£©¡£¡¡
ÎÒ»¹»³ÒÉËûÃÇÊÇ·ñÔç¾Í·¢ÏÖÕâÑù×ö»ñµÃµÄÐÔÄÜÊDz»ÄܽÓÊܵġ£¡¡¡¡
½â¾öµÄ·½·¨ÊÇÏóÇ°Ãæ½éÉܵÄÄÇÑùÖÆ×÷Ò»¸ö¿É±äµÄͬ־Àà¡£¶Ô×Ö´®À´Ëµ£¬Õâ¸öͬ־Àà½Ð×÷StringBuffer£¬±àÒë¡¡
Æ÷¿ÉÒÔ×Ô¶¯´´½¨Ò»¸öStringBuffer£¬ÒÔ±ã¼ÆËãÌض¨µÄ±í´ïʽ£¬ÌرðÊÇÃæÏòString¡¡¶ÔÏóÓ¦Óø²¸Ç¹ýµÄÔËËã·û£«¡¡
ºÍ£«=ʱ¡£ÏÂÃæÕâ¸öÀý×Ó¿ÉÒÔ½â¾öÕâ¸öÎÊÌ⣺¡¡¡¡
¡¡¡¡
//£º¡¡ImmutableStrings¡£java¡¡¡¡
//¡¡Demonstrating¡¡StringBuffer¡¡¡¡
¡¡¡¡
public¡¡class¡¡ImmutableStrings¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡String¡¡foo¡¡=¡¡¡¨foo¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡String¡¡s¡¡=¡¡¡¨abc¡¨¡¡£«¡¡foo¡¡£«¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨def¡¨¡¡£«¡¡Integer¡£toString£¨47£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨s£©£»¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡The¡¡¡¨equivalent¡¨¡¡using¡¡StringBuffer£º¡¡¡¡
¡¡¡¡¡¡¡¡StringBuffer¡¡sb¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡new¡¡StringBuffer£¨¡¨abc¡¨£©£»¡¡//¡¡Creates¡¡String£¡¡¡¡¡
¡¡¡¡¡¡¡¡sb¡£append£¨foo£©£»¡¡¡¡
¡¡¡¡¡¡¡¡sb¡£append£¨¡¨def¡¨£©£»¡¡//¡¡Creates¡¡String£¡¡¡¡¡
¡¡¡¡¡¡¡¡sb¡£append£¨Integer¡£toString£¨47£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨sb£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
´´½¨×Ö´®¡¡s¡¡Ê±£¬±àÒëÆ÷×öµÄ¹¤×÷´óÖµȼÛÓÚºóÃæʹÓá¡sb¡¡µÄ´úÂ롪¡ª´´½¨Ò»¸öStringBuffer£¬²¢Óá¡append£¨£©¡¡
½«ÐÂ×Ö·ûÖ±½Ó¼ÓÈë¡¡StringBuffer¡¡¶ÔÏ󣨶ø²»ÊÇÿ´Î¶¼²úÉúжÔÏ󣩡£¾¡¹ÜÕâÑù×ö¸üÓÐЧ£¬µ«²»ÖµµÃÿ´Î¶¼´´¡¡
½¨Ïó¡¨abc¡¨ºÍ¡¨def¡¨ÕâÑùµÄÒýºÅ×Ö´®£¬±àÒëÆ÷»á°ÑËüÃǶ¼×ª»»³É¡¡String¡¡¶ÔÏó¡£ËùÒÔ¾¡¹ÜStringBuffer¡¡ÌṩÁË¡¡
¸ü¸ßµÄЧÂÊ£¬µ«»á²úÉú±ÈÎÒÃÇÏ£ÍûµÄ¶àµÃ¶àµÄ¶ÔÏ󡣡¡¡¡
12¡£4¡£4¡¡String¡¡ºÍ¡¡StringBuffer¡¡Àà¡¡¡¡
ÕâÀï×ܽáÒ»ÏÂͬʱÊÊÓÃÓÚString¡¡ºÍStringBuffer¡¡µÄ·½·¨£¬ÒÔ±ã¶ÔËüÃÇÏ໥¼äµÄ¹µÍ¨·½Ê½ÓÐÒ»¸öÓ¡Ïó¡£ÕâЩ¡¡
±í¸ñ²¢Î´°Ñÿ¸öµ¥¶ÀµÄ·½·¨¶¼°üÀ¨½øÈ¥£¬¶øÊÇ°üº¬ÁËÓë±¾´ÎÌÖÂÛÓÐÖØÒª¹ØϵµÄ·½·¨¡£ÄÇЩÒѱ»¸²¸ÇµÄ·½·¨Óá¡
µ¥¶ÀÒ»ÐÐ×ܽᡣ¡¡¡¡
Ê×ÏÈ×ܽáString¡¡ÀàµÄ¸÷ÖÖ·½·¨£º¡¡¡¡
¡¡¡¡
·½·¨¡¡¡¡×Ô±äÁ¿£¬¸²¸Ç¡¡ÓÃ;¡¡¡¡
¡¡¡¡
¹¹½¨Æ÷¡¡Òѱ»¸²¸Ç£ºÄ¬ÈÏ£¬String£¬StringBuffer£¬char¡¡Êý×飬byte¡¡Êý×é¡¡´´½¨String¡¡¶ÔÏó¡¡¡¡
length£¨£©¡¡ÎÞ¡¡String¡¡ÖеÄ×Ö·ûÊýÁ¿¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡374¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡376¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
charAt£¨£©¡¡int¡¡Index¡¡Î»ÓÚString¡¡ÄÚij¸öλÖõÄchar¡¡¡¡
getChars£¨£©£¬getBytes¡¡¿ªÊ¼¸´ÖƵÄÆðµãºÍÖյ㣬ҪÏòÆäÖи´ÖÆÄÚÈݵÄÊý×飬¶ÔÄ¿±êÊý×éµÄÒ»¸öË÷Òý¡¡½«¡¡char¡¡
»òbyte¡¡¸´ÖƵ½ÍⲿÊý×éÄÚ²¿¡¡¡¡
toCharArray£¨£©¡¡ÎÞ¡¡²úÉúÒ»¸öchar£§£§£¬ÆäÖаüº¬ÁËString¡¡ÄÚ²¿µÄ×Ö·û¡¡¡¡
equals£¨£©£¬equalsIgnoreCase£¨£©¡¡ÓÃÓڶԱȵÄÒ»¸ö¡¡String¡¡¶ÔÁ½¸ö×Ö´®µÄÄÚÈݽøÐеȼÛÐÔ¼ì²é¡¡¡¡
pareTo£¨£©¡¡ÓÃÓڶԱȵÄÒ»¸öString¡¡½á¹ûΪ¸º¡¢Áã»òÕý£¬¾ßÌåÈ¡¾öÓÚString¡¡ºÍ×Ô±äÁ¿µÄ×Öµä˳Ðò¡£×¢Òâ´ó¡¡
дºÍСд²»ÊÇÏàµÈµÄ£¡¡¡¡¡
regionMatches£¨£©¡¡Õâ¸öString¡¡ÒÔ¼°ÆäËûString¡¡µÄλÖÃÆ«ÒÆ£¬ÒÔ¼°Òª±È½ÏµÄÇøÓò³¤¶È¡£¸²¸Ç¼ÓÈëÁË¡°ºöÂÔ´ó¡¡
Сд¡±µÄÌØÐÔ¡¡Ò»¸ö²¼¶û½á¹û£¬Ö¸³öÒª¶Ô±ÈµÄÇøÓòÊÇ·ñÏàͬ¡¡¡¡
startsWith£¨£©¡¡¿ÉÄÜÒÔËü¿ªÍ·µÄString¡£¸²¸ÇÔÚ×Ô±äÁ¿Àï¼ÓÈëÁËÆ«ÒÆ¡¡Ò»¸ö²¼¶û½á¹û£¬Ö¸³öString¡¡ÊÇ·ñÒÔÄÇ¡¡
¸ö×Ô±äÁ¿¿ªÍ·¡¡¡¡
endsWith£¨£©¡¡¿ÉÄÜÊÇÕâ¸ö¡¡String¡¡ºó׺µÄÒ»¸ö¡¡String¡¡Ò»¸ö²¼¶û½á¹û£¬Ö¸³ö×Ô±äÁ¿ÊDz»ÊÇÒ