这是我的Java学习记录系列文章,记录的是我学习Java的过程中遇到的问题和学到的知识,如果你遇到了类似的问题,希望我的文章能对你有所帮助。
本人水平有限,如有错误,还望指正,谢谢大家!
该系列文章均为原创,如需转载,请注明出处。
明确String为引用类型
首先应该明确一点,String类型对象一旦创建就无法改变它的值
无论你使用String直接创建String a="word"
还是使用new创建String a=new String("abc")
String类型作为引用类型的一种,是对被指向的实际值的一种引用,类似于C中的指针
比较运算符"=="
"=="比较的是两个变量是否指向同一个对象,即是否为同一个内存地址
String s1="aaa";
String s2=s1;
System.out.println(s1==s2);
//第一次为true
s2=new String("aaa");
System.out.println(s1==s2);
//第二次为false
第一次为true是因为s1和s2都指向了同一个对象,内存地址相同,结果为true
第二次s2指向了新的对象,因此内存地址不同,结果为false
String对equals()方法的重写
String类重写了其父类Object类中的equals()
方法。
首先判断两个变量是否指向同一个对象,相同返回true
,
如果不同再判断两个变量指向的对象的内容是否相同,
内容相同返回true
,不同返回false
String s1="aaa";
String s2=s1;
System.out.println(s1==s2);//true
System.out.println(s1.equals(s2));//true
s2=new String("aaa");
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
总结
"=="比较的是两个String类型变量是否指向同一个对象
equals()
则判断两个String类型变量是否相等