string 常量池

http://hi.baidu.com/farush/blog/item/1f73c8ea7da183d3d439c952.html

存在于.class文件中的常量池,在运行期被JVM装载,并且可以扩充。String的intern()方法就是扩充常量池的一个方法;当一个String实例str调用intern()方法时,Java查找常量池中是否有相同Unicode的字符串常量,如果有,则返回其的引用,如果没有,则在常量池中增加一个Unicode等于str的字符串并返回它的引用;请看下面的例子:


String s0= "abc"

String s1=new String("abc");

String s2=new String("abc");
System.out.println(s0==s1)

s1.intern(); //虽然执行了s1.intern(),但它的返回值没有赋给s1

s2=s2.intern(); //把常量池中“abc”的引用赋给s2

System.out.println(s0==s1);

System.out.println(s0==s1.intern());

System.out.println(s0==s2);

结果为:

false

false

true //说明s1.intern()返回的是常量池中”abc”的引用

true

你可能感兴趣的:(jvm,html,Blog)