1、举例代码如下:public class StringDemo {
public static void main(String[
args) {
String s1 = \"Hello\";
String s2 = \"Hello\";
System.out.println(s1 == s2); // true
2、稍微改动一下程序 , 会有奇怪的发现:public class StringDemo {
public static void main(String args[
) {
String str1 = \"Hello\";
String str2 = new String(\"Hello\");
String str3 = str2; // 引用传递
System.out.println(str1 == str2); // false
System.out.println(str1 == str3); // false
System.out.println(str2 == str3); // true
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
System.out.println(str2.equals(str3)); // true
上方我们new了一个对象 , 用“==”比较s1和s2 , 返回的结果却是false;而用用“equals”比较s1和s2 , 返回的结果是true 。
为了分析上面的代码 , 我们必须首先分析堆内存空间和栈内存空间 , 这一点非常重要:
看完上面的图 , 再结合上面的代码 , 就一目了然了 。 现在我们可以给自己出一道面试题:
面试题:请解释字符串比较之中“==”和equals()的区别?
==:比较的是两个字符串内存地址(堆内存)的值是否相等 , 属于地址值比较;
equals():比较的是两个字符串的内容 , 属于内容比较 。
以后进行字符串相等判断的时候都使用equals() 。
3、再次更改程序:public class ObjectDemo{
public static void main(String[
args) {
String s1 = \"Hello\";
String s2 = new String(\"Hello\");
s2 = s2.intern();
System.out.println(s1 == s2); // true
System.out.println(s1.equals(s2)); // true
4、比较两个对象的值:代码如下:
上述代码的第5行中 , java.lang.String的intern()方法\"abc\".intern()方法的返回值还是字符串\"abc\" , 表面上看起来好像这个方法没什么用处 。 但实际上 , 它做了个小动作:检查字符串池里是否存在\"abc\"这么一个字符串 , 如果存在 , 就返回池里的字符串;如果不存在 , 该方法会 把\"abc\"添加到字符串池中 , 然后再返回它的引用 。
public class Demo6 {
public static void main(String args[
) {
Student student1 = new Student(\"生命壹号\" 22 \"成都\");
Student student2 = new Student(\"生命壹号\" 22 \"成都\");
System.out.println(student1 == student2); //false
System.out.println(student1.equals(student2)); //true
class Student {
private String name;
private int age;
private String address;
public Student(String name int age String address) {
this.name = name;
this.age = age;
this.address = address;
//重写Object类中的equals方法(比较两个对象的值是否相等)
- 教室|集度完成A轮融资,开扒百度造车到底是香饽饽还是烫手山芋?
- 希捷酷狼|百度云盘正式到来!威联通TS-464C初体验
- 百度网盘|家庭网络折腾笔记 篇十三:手把手教你使用群晖同步 百度网盘&阿里云盘
- R技术专利|以腾讯、百度为首的中国科技公司VR/AR技术专利申请量位居全球前列
- talkingdata|企业和品牌百度百科应该怎么做,创建百度百科的方法和规则
- 百度|百度研究院10大预测锚定科技走势
- 百度|社会信息差极大,商业机会藏在其中
- 高德地图|2021手机地图满意度排名,高德第一,谷歌第五
- 百度|偏门项目,一月收入四五万
- 抖音|2022年红包大战再起:抖音分20亿元、快手多砸1亿元、百度与去年持平