Java全面细致讲解==和equals的使用(java =和equals)

网友投稿 397 2022-07-27


目录equals与==1. ==的使用1.1 概述1.2 代码演示2. equals的使用2.1 概述2.2 代码演示3. ==和equals的区别3.1 概述3.2 代码演示

上篇博文:java-多线程的使用

equals与==

1. ==的使用

1.1 概述

⭕ 用于基本类型比较值时:只要两个变量的值相等,即为true。

⭕ 用于引用类型比较引用(是否指向同一个对象)时,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体,只有指向同一个对象时,==才返回true。

⭕ 用“==”进行比较时,符号两边的数据类型必须兼容(可自动转换的基本数据类型除外),否则编译出错。

1.2 代码演示

演示一:

//基本数据类型

int i = 10;

int j = 10;

double d = 10.0;

System.out.println(i == j);//true

System.out.println(i == d);//true

alHTeWvSX char c = 10;

System.out.println(i == c);//true

char c1 = 'A';

char c2 = 65;

System.out.printlnalHTeWvSX(c1 == c2);//true

演示二:

String str1 = new String("嘻嘻");

String str2 = new String("嘻嘻");

System.out.println(str1 == str2);//false

演示三:

int i = 10;

boolean b = true;

// System.out.println(i == b);

// 报错: Operator '==' cannot be applied to 'int', 'boolean'

2. equals的使用

2.1 概述

⭕ 是一个方法,而非运算符。

⭕ 只能适用于引用数据类型。

⭕ Object类中equals()的定义:

public boolean equals(Object obj) { return (this == obj); }

说明:Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体。

⭕ 像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。

⭕ 通常情况下,我们自定义的类如果使用equals()的话,也通常http://是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写,重写的原则:比较两个对象的实体内容是否相同。

2.2 代码演示

演示一:

Person p1=new Person();

Person p2=new Person();

System.out.println(p1.equals(p2));//false

//Person为自定义的类,没有对equals()进行重写

String str1 = new String("小老师ir");

String str2 = new String("小老师ir");

System.out.println(str1.equals(str2));//true

Date date1 = new Date(32432525324L);

Date date2 = new Date(32432525324L);

System.out.println(date1.equals(date2));//true

演示二:

public class Customer {

private String name;

private int age;

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Customer other = (Customer) obj;

if (age != other.age)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

}

3. ==和equals的区别

3.1 概述

⭕ == 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址。

⭕ equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==;我们可以看到String等类的equals()方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。

⭕ 具体要看自定义类里有没有重写Object的equals()方法来判断。

⭕ 通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

3.2 代码演示

int it = 65;

float fl = 65.0f;

System.out.println(“65和65.0f是否相等?” + (it == fl)); //true

char ch1 = 'A';

char ch2 = 12;

System.out.println("65和'A'是否相等?" + (it == ch1));//true

System.out.println(“12和ch2是否相等?" + (12 == ch2));//true

String str1 = new String("hello");

String str2 = new String("hello");

System.out.println("str1和str2是否相等?"+ (str1 == str2));//false

System.out.println("str1是否equals str2?"+(str1.equals(str2)));//true

System.out.println(“hello” == new java.util.Date()); //编译不通过


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:世界著名程序SpringMVC完整过程(第一个springmvc程序)
下一篇:springboot使用RedisRepository操作数据的实现(springboot项目中使用redis)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~