标签:
1 String str ="hello"; 2 String str1="he"+new String("llo"); 3 String str2= new String("hello"); 4 System.out.println(str==str1);//false; 5 System.out.println(str.endsWith(str1));//true; 6 System.out.println(str1==str2);//false; 7 System.out.println(str1.equals(str2));//true; 8 System.out.println(str==str2);//false; 9 System.out.println(str.equals(str2));//true;
String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
new String()和new String(”")都是申明一个新的空字符串,是空串不是null;
一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。
一种是先在栈中创建一个对String类的对象引用变量str,然后通过符号引用去字符串常量池 里找有没有""中的值,如果没有,则将""中的值存放进字符串常量池 ,并令str指向””中的值,如果已经有则直接令str指向。
代码为两者的区别。
还能看出一点,==比较的是引用位置是否相同,而equals()比较的是数值是否相等。
标签:
原文地址:http://www.cnblogs.com/boeing-bick/p/4546396.html