//20210117
写在前面:今天写原型模式代码的时候涉及到了浅克隆和深克隆的问题,就想起了String类型貌似和这个有些关系,故去做了个实验并在此记录下来
- 众所周知,java中“==”运算符在比对对象类型时比对的是对象的地址,而equals()方法比对的是内容
- 所以按道理来说我在方法里创建两个相同内容的String对象,使用“==”运算符比对的时候应该报出错误,但是实验里返回的是true,去搜了资料,发现String使用了享元模式,相同内容的对象会指向同一个地址,改变之后再创新新对象
- 实验源代码如下:
public static void main(String[] args) {
String s = "ABC";
String ss = "ABC";
System.out.println(s == ss);
System.out.println(s.equals(ss));
System.out.println(s);
System.out.println(ss);
s = "abcd";
System.out.println(s);
System.out.println(ss);
System.out.println(s == ss);
System.out.println(s.equals(ss));
}
- 输出如下:
以上
希望对大家有所帮助