/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String m1="I hate you ";
String m2="I hate you ";
System.out.println(m1.equals(m2));
System.out.println(m1==m2);
}
}
为什么第一个和第二个都是TRUE????作者: 丁晓宇 时间: 2012-2-16 23:11
String m1="I hate you "; //这一句是表示创建了两个对象 一个是"I hate you ",另外一个是对 "I hate you "的引用 m1
String m2="I hate you "; //这句话是又创建了一个对"I hate you "的引用m2
他们引用的是同一对象 所以字节码相同,实际上你创建了3个对象 作者: 李建锋 时间: 2012-2-16 23:14
那这算不算是享元设计模式呢?作者: 丁晓宇 时间: 2012-2-16 23:18
是享元{:soso_e149:}作者: 黄锦成 时间: 2012-2-17 09:43
当你创建了m1后,你创建m2,它会去内存中查找是否存在内容一样的字符串对象,有就使用,没得话就创建。用new的方式又不一样。这是String类比较特别的地方。你好好看看老毕的视频吧作者: 王康 时间: 2012-2-17 10:09
String m1="I hate you ";//同时创建了两个对象 一个是"I hate you ",另外一个是对 "I hate you "的引用 m1
String m2="I hate you ";//创建了一个对"I hate you "的引用m2