本帖最后由 李盈科 于 2011-11-26 22:56 编辑
先了解一下Java 内存管理栈和堆 java的String类有个字符串池 这个是在栈中 ,String a =“hellow” 如果字符串池中没有这个对象 就创建一个新的返回给引用,如果有就把创建过的地址返回给引用。 String b = new String(“world”) 这个先看串池中有无这个对象 如果有就什么也不干,如果没有就创建一个对象,然后在在内存的堆里创建新的对象 返回给引用。new String每创建一次都会生成新的对象!
String 比较。。
class Test {
public static void main(String[] args) {
String hello = "Hello", lo = "lo";
System.out.print((hello == "Hello") + " ");
System.out.print((Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo")) + " ");
System.out.print((hello == ("Hel"+lo)) + " ");
System.out.println(hello == ("Hel"+lo).intern());
}
}
class Other { static String hello = "Hello"; }
|