==:如果比较的对象是基本数据类型,则比较的是数值是否一致;如果比较的是引用数据类型,则比较的是对象的地址值是否一致。

equals():equals()方法不能用于比较基本数据类型的对象,如果对象和自身进行比较,则equals()方法与==是一样的。对于String类 Date类 File类等 可重写equals() 方法用于比较对象的属性内容是否一致。

举例

如果a,b 是基本类型,那么== 运算符比较的是什么呢?

public class Demo {
private static int a = 100;
private static int b = 100;
public static void main(String[] args) {
if(a == b){
System.out.print("因为a,b是基本类型,所以此时比较的是a, b 的值");
}
}
}

运行Debug模式,测试一下



由此可知,当a,b是基本类型,那么== 运算符比较的就是基本类型的值。

如果a,b 是引用类型, 那么== 运算符比较的还是a,b 的值吗?

public class Demo {

  private static String a = "china";
private static String b = "china"; public static void main(String[] args) {
if(a == b){
System.out.print("因为a, b是引用类型, 所以此时比较的是对象a, b的地址值");
}
}
}

运行Debug模式,测试一下



由此可知,当a,b是引用类型,那么== 运算符比较的就是引用类型的对象地址值。

如果a,b 是引用类型,那么equals()方法比较的是什么呢?

public class Demo {

  private static String a = "china";
private static String b = "china"; public static void main(String[] args) {
if(a.equals(b)){
System.out.print("因为a, b是引用类型, 所以此时比较的是对象a, b的地址值");
}
}
}

运行Debug模式,测试一下



由此可知,默认情况下,equals()方法比较的是对象与自身是否一致。当对象与自身一致时,equals()方法与== 是一样的。

如果重写equals()方法,是否可以比较对象的内容呢?

class Pig {
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
// 重写equals()方法, 用于比较对象的属性内容是否一致
public boolean equals(Object anObject) {
// 判断对象与自身是否一致
if (this == anObject) {
return true;
}
// 判断anObject与String是否为同类或存在继承关系
if (anObject instanceof String) {
return true;
}
//判断是同一类或者子父类关系,则将Object类型强转为Pig
Pig pig = (Pig)anObject;
// 比较pig的属性name的内容是否一致
if(this.name == pig.name && this.name.equals(pig.name)) {
return true;
}else {
return false;
}
}
}

运行Debug模式,测试一下



由此可知,重写equals()方法,equals()方法是可以比较对象属性内容是否一致的。

最新文章

  1. div不换行_div同行_div强制不换行
  2. express-6 请求和响应对象(1)
  3. php命令传参
  4. JS阻止鼠标滚动
  5. Bouncycastle中的RSA技术以及解决之道
  6. 【阅读】提问的智慧+有效的报告BUG
  7. Java模板引擎 FreeMarker
  8. 计算几何基础——矢量和叉积 && 叉积、线段相交判断、凸包(转载)
  9. android界面优化笔记(TODO)
  10. Axis2 java调用.net webservice接口的问题(郑州就维)
  11. Android软键盘弹出时布局问题
  12. CentOS下安装node
  13. 如何在页面上输出html标签:符号实体
  14. mysql SQL语法总结
  15. JAVA_SE基础——17.方法的重载
  16. Mysql数据库使用量查询及授权
  17. Hbase思维导图之调优
  18. 2018-2019-2 20175105 实验一《JAVA开发环境的熟悉》实验报告
  19. centos6安装自带php
  20. jQuery easyUI的datagrid,如何在翻页以后仍能记录被选中的行

热门文章

  1. snmp_trap/snmptt
  2. Codeforces Round #524 (Div.2)题解
  3. NetworkX系列教程(5)-查看graph的信息
  4. IDEA2018全局搜索中搜索jar包/lib
  5. ICEM-缺角正方体(2D转3D)
  6. 在不切换分支的情况下,如何在all branches中快速查看指定分支,相对其他分支的状态
  7. Flutter移动电商实战 --(46)详细页_自定义TabBar Widget
  8. vue——vuex安装及使用
  9. matlab fspecial 用法解释
  10. IO操作之BIO、NIO、AIO