public class stringDemo {
public static void main(String[] args) {
//1.String的对象是不可变的???
//String 是不可变字符串对象
//注意:只要是以".."方式写出的字符串对象,会在堆内存中的字符串常量池中储存。
String name="超级";
name+="大帅哥";
name+="宗介";
System.out.println(name);
//结论:每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没改变的,因此说string的对象是不可变的
//2.只要是以双引号给出的字符串对象,存储在常量池中,而且内容相同时只会存储一份
String s1="abc";
String s2="abc";
System.out.println(s1 == s2);//true,地址值相同
//3.new String创建字符串对象,每次new出来的都是一个新对象,放在堆内存中
char[] chars={'a','b','c'};
String a1=new String(chars);
String a2=new String(chars);
System.out.println(a1 == a2);//false 地址值改变
}
}
//判断练习
public class stringDemo {
public static void main(String[] args) {
String s1="abc";
String s2="ab";
String s3=s2+'c';
System.out.println(s1 == s3);//false 编译阶段时只认为s2是一个符号,并不知道s2的具体值。
}
}
public class stringDemo {
public static void main(String[] args) {
String s1="abc";
String s2="a"+"b"+"c";
System.out.println(s2 == s1);//true java存在编译优化机制,程序编译时:"a"+"b"+"c"会直接转化成"abc",以提高程序的执行性能
}
}
理解String使用时的几个注意事项
最新推荐文章于 2024-05-31 10:46:10 发布