String是一种特殊的对象.String 类是一个不可变的类…也就说,String 对象
一旦创建就不允许修改
使用equals和==比较的区别
public class Main {
public static void main(String[] args) {
String a = new String("1");
String b = new String("1");
System.out.println(a == b);//对象比较
System.out.println(a.equals(b));//值比较
}
}
结果为
false
true
public class Main {
public static void main(String[] args) {
String a = "1";
String b = "1";
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
结果为
true
true
String 类有一个对应的 String 池,也就是 String pool.每一个内容相同的字符串对
象都对应于一个 pool 里的对象。
如果String缓冲池内不存在与其指定值相同的String对象,那么此时JVM将为此创建新的String对象,并存放在String缓冲池内。
如果String缓冲池内存在与其指定值相同的String对象,那么此时JVM将不为此创建新的String对象,而直接返回已存在的String对象的引用。
public static void main(String[] args) {
String a = new String("abc");//#1
String b = "abc";
String c = "abc";
System.out.println(a == b);
System.out.println(a == c);
System.out.println(b == c);
}
结果为
false
false
true
#1中左侧的a不是对象,而是引用,引用的是右侧的new String(“abc”)
https://blog.csdn.net/weixin_42476601/article/details/88659715