s 不是一个对象,确切的说是对象的引用。
先给楼主说一下关于String类型的问题,楼主的的String s = "abc",这是在字符串池中创建一个字符串对象,而String s = new String("abc");当以这种方式生成String类型的对象时,相当于创建了两个对象,这种方法创建的时候会先看一下字符串池中有没有 abc 这个字符串,有的话就不在字符串池中创建abc了,然后再在对内存中创建 对象 abc,这是会把此时的地址传递给 引用变量 s .
如果两个引用同时指向了字符串池中存在的对象,则他们的地址值是一样的,也就是说:
String str1 = “abc”;
String str2 = "abc";
则 str1 == str2; |