【java学习—八】==操作符与equals方法(2)

编程入门 行业动态 更新时间:2024-10-20 09:34:29

【java学习—八】==<a href=https://www.elefans.com/category/jswz/34/1770947.html style=操作符与equals方法(2)"/>

【java学习—八】==操作符与equals方法(2)

文章目录

  • 1. ==操作符
  • 2. equals方法
  • String对象的创建


1. ==操作符

(1)基本类型比较值 : 只要两个变量的值相等,即为 true.
int a=5; if(a==6){…}

(2)引用类型比较引用 ( 是否指向同一个对象 ): 只有指向同一个对象时,==才返回 true.

		Person p1 = new Person();Person p2 = new Person();System.out.println(p1 == p2);//输出:false

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

2. equals方法

equals():所有类都继承了 Object ,也就获得了 equals() 方法。还可以重写。
(1) 只能比较引用类型,其作用与“ ==” 相同 , 比较是否指向同一个对象。格式 :obj1.equals(obj2)

		Person p1 = new Person();Person p2 = new Person();System.out.println(p1 == p2);//falseSystem.out.println(p1.equals(p2));//false

特例
当用 equals() 方法进行比较时,对类File 、String 、Date及包装类( Wrapper Class )来说,是比较类型及内容不考虑引用的是否是同一个对象。原因是在这些类中重写了 Object 类的 equals() 方法。

		String s1 = new String("abc");String s2 = new String("abc");System.out.println(s1 == s2);//falseSystem.out.println(s1.equals(s2));//true

结论:
对于对象来说:
特殊的类,如String、File、Data,使用==比较的是对象(对象的地址),equals比较的是内容
②除了特殊的类之外的其他普通的类的对象,==和equals比较的都是对象(对象的内存地址)。
③如果你想改变某一个类的equals,不想用equals来比较对象的内存地址,就需要重写equals方法

String对象的创建

(1)字面量创建String对象

String s1 = "abc"; //常量池中添加“abc”对象,返回引用地址给s1对象
String s2 = "abc"; //通过equals()方法判断常量池中已有值为abc的对象,返回相同的引用。
System.out.println(s1 == s2);//true 所以s1 == s2

(2)new创建String对象

		String s3 = new String("def");//在常量池中添加“def”对象,在堆中创建值为“def”的对象s3,返回指向堆中s3的引用String s4 = new String("def");//常量池中已有值为“def”的对象,不做处理,在堆中创建值为“def”的对象s4,返回指向堆中的s4的引用

更多推荐

【java学习—八】==操作符与equals方法(2)

本文发布于:2023-12-06 19:20:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1668551.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:操作   方法   java   equals

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!