`
百合不是茶
  • 浏览: 346169 次
社区版块
存档分类
最新评论

equals和== 的使用及误区

阅读更多

 

== 是运算符默认的是比较地址 可以与基本数据类型进行比较, 检测地址是否相等

  

equals是方法,不可以与基本类型比较 默认的是检测两个内容是否相等   当一个类没有重写equals方法时,默认的是object的equals方法此时和==比较是一样,(equals判定字符串判定的内容,)

 

		String s1 = "abc";
		String s2 = "abc";
                System.out.println(s1 == s2);
                System.out.println(s1.equals(s2));

 

输出结果:
true
true

 s1和s2是相同的地址     equals的内容也相同

 

 

		 int a = 100;
		 int b = 100;
		 System.out.println(a == b);

 

输出:
true

 

 equals不能比较基本数据类型     a与b相同会输出true

 

                String s3 = new String("abc");
		String s4 = new String("abc");
               System.out.println(s3 == s4);
	       System.out.println(s3.equals(s4));
 

 

输出
false
true

 s3和s4创建的对象肯定不是一个地址s3==s4输出false

s3与s4创建对象时的参数相同,equals为true

 

class Student{
private String name;
   public Student(String name){
  this.name = name;
   }
//重写equals的方法
 public boolean equals(Student obj){
    return name.equals(obj.name);
   }
}

 

                Student stu1 = new Student("abc");
		Student stu2 = new Student("abc");
		System.out.println(stu1.equals(stu2));

 

输出:true

重写equals内容的比较,如果name相同则输出true

 

 

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics