String 是一个类,而不是java中的基本数据类型。
String s = "abc"; "abc"是一个对象,存放在常量池中。一旦被初始化就不能被更改了。
s = "cde"; 这里并没有改变字符串,而是使对象引用指向字符串cde;
String s1 = new String("abc");
String s2 = "abc";
这两者有什么不同,第一个有两个对象,一个是"abc"对象,另个是使用new关键字为对象s1申请的空间。而第二个只有一个“abc”对象。
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
System.out.println(s1 == s2); 结果为false
System.out.println(s1 == s3); 结果为true
使用用对象直接比较是比较的对象引用的地址,因此s1 == s2为false,
s1指向的对象"abc"存放在常量池中,s3再次创建对象"abc"时,先检查常量池中是否存在,如果已存在
则直接指向对象"abc",而不再重新创建。
java 笔记 String 和Stringbuffer,布布扣,bubuko.com
时间: 2024-10-21 04:11:05