JAVAÐéÄâ»úÓÐÒ»¸ö×Ö·û´®³Ø,¶ÔÓÚ×Ö·û´®³ØµÄ·ÃÎÊ¿ÉÒÔʹÓÃ×Ö·û´®¶ÔÏóµÄintern()·½·¨,¿É¶¯Ì¬Ïò³ØÖÐÌí¼Ó¶ÔÏó,ËüµÄ¶¨ÒåÈçÏÂ:
public native String intern();
ÕâÊÇÒ»¸ö±¾µØ·½·¨,ÔÚµ÷ÓÃÕâ¸ö·½·¨Ê±,JAVAÐéÄâ»úÊ×Ïȼì²é×Ö·û´®³ØÖÐÊÇ·ñ´æÔÚÓë¸Ã×Ö·û´®¶ÔÏóÖµÏàµÈµÄ¶ÔÏó,Èç¹û´æÔھͷµ»Ø×Ö·û´®³ØÖеĶÔÏóµÄÒýÓÃ,·ñÔò¾Íд´½¨Ò»¸öÓë¸Ã×Ö·û´®¶ÔÏóÖµÏàµÈµÄ¶ÔÏó,È»ºóÔÙ·µ»ØÐ´´½¨¶ÔÏóµÄÒýÓÃ,ÓÐÈçÏÂÒ»¶Î´úÂë:
public class InternTest{
public static void main(String args[]){
//ÓÃÒ»¸ö×Ö·ûÊý×é³õʼ»¯a,ÊDZÜÃâ³ØÖк¬ÓÐֵΪ"abcd"µÄ¶ÔÏó
String a=new String(new char[]{'a','b','c','d'});
String b=a.intern();
(1)
if(a==b){
System.out.println("b¼ÓÈëÁË×Ö·û´®³ØÖÐ,ûÓÐн¨¶ÔÏó");
}else{
System.out.println("bû¼ÓÈë×Ö·û´®³ØÖÐ,н¨Á˶ÔÏó");
}
}
}
ÉÏÊö´úÂëÔËÐкó½«Êä³ö"bû¼ÓÈë×Ö·û´®³ØÖÐ,н¨Á˶ÔÏó".ÔÒòÈçÏÂ:
String a=new String(new char[]{'a','b','c','d'});
¸ÃÓï¾ä»áн¨Ò»¸ö×Ö·û´®¶ÔÏó,µ«¸Ã¶ÔÏó²¢²»»á·ÅÈë×Ö·û´®³ØÖУ¬¶øÊÇ·ÅÔÚ¶ÑÖÐ
ͨ¹ýa.intern()Óï¾ä,JVM½«»áÔÚ×Ö·û´®³ØÖÐн¨Ò»¸öֵΪ"abcd"µÄ¶ÔÏó,²¢°ÑÆäÒýÓ÷µ»Ø¸øb,Òò´Ë²ÅÓÐÁËÉÏÃæµÄÊä³ö
Èç¹ûÔÚ´úÂëÖÐ(1)´¦¼ÓÈëÓï¾ä:String c="abcd";
ÄÇôSystem.out.println(c==b);»á·µ»Øtrue
Ç°ÃæÌ¸µ½String¶ÔÏóµÄ´æ´¢,ÔÚJAVAÖÐ,Õ»(stack)Ö÷Òª±£´æ»ù±¾ÀàÐÍ,ËٶȽö´ÎÓڼĴæÆ÷,±È¶ÑÒª¿ì,¶ø¶Ñ(heap)Ö÷ÒªÓÃÓÚ´æ´¢¶ÔÏó;
ÔÚÓÃÒýºÅ´´½¨×Ö·û´®¶ÔÏóʱ,ʵ¼ÊÉÏÊÇJAVAÐéÄâ»úÔÚÕ»Öд´½¨¶à¸öcharÐÍ×Ö·û,È»ºóÔÚ¶ÑÖд´½¨Ò»¸öString¶ÔÏó,¸Ã¶ÔÏóµÄÖµ¾ÍÊÇ֮ǰջÖеÄÄǸö×Ö·ûÐòÁÐ;¶øÓÃnew String("abc")´´½¨String¶ÔÏóʱ,¹Ø¼ü×Önew»á´´½¨Ò»¸ö×Ö·û´®¶ÔÏó·ÅÔÚ¶ÑÖÐ,"abc"Ò²»á´´½¨Ò»¸ö×Ö·û´®¶ÔÏó,µ«¸Ã