String类位于java.lang包中,具有丰富的方法
下面是String方法中直接在后面加双引号“”和new一个对象装字符串的区别
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建对象:在堆内存中创建对象
//在栈内存中形成引用
String s1 = "HelloWorld";//通过双引号直接创建:是在字符串常量值中创建字符串
String s = s1;
String s3 = "HelloWorld";///字符串常量值中的地址(相当于引用的一个地址)
String s4 = new String("HelloWorld");//通过new关键字创建:跟普通对象的创建时一样的
System.out.println(s == s1);//true
System.out.println(s == s3);//true
System.out.println(s == s4);//false
String s5 = "Hello";
String s6 = "World";
String s7 = s5 + s6;
System.out.println(s == s7);//false
String s8 = "Hello" + "World";
System.out.println(s == s8);//true
}
而后来版本出现的StringBuffer是为了内存优化
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "123";
String str2 = "abc";
String str3 = str+str2;
//三个对象
System.out.println(str3);
//StringBuffer只有一个对象
//内存优化考虑
StringBuffer sb = new StringBuffer();
//String str = null;
sb.append("123");
//str += "123";
sb.append("abc");
//追加
//str += "abc";
System.out.println(sb);
}