equals()方法
admin
2024-03-10 04:59:48
0次
package com.javase.进阶.equals;
/*** equals()方法*      - equals()方法是老祖宗Object类中的方法,是用来判断两个引用数据类型对象是否相等。*        - 以后所有自定义类的equals()方法都需要重写,因为Object类中的equals()方法比较的是两个对象的内存地址,*              而我们应该比较的是两个对象的内容,所以需要重写equals()方法。**        - 重写规则:自己定,主要看是什么和什么相等时表示两个对象相等。**        - String类是SUN编写的,所以String类的equals()方法肯定也重写了。*              以后判断两个字符串是否相等,最好不要使用"==",而是要调用字符串对象的equals()方法。*                如果是直接赋值的,比如:              *                String s1 = "abc";*                String s2 = "abc";*                此时判断s1与s2是否相等可以使用"==";*                System.out.println(s1 == s2); //该行代码输出结果是true*                如果字符串对象是"new"出来的,比如:*                String s3 = new String("abc");*                这时你再判断s1与s3是否相等*                System.out.println(s1 == s3); //该行代码输出结果是false*                *                所以为了确保安全准确,今后比较字符串是否相等的时候统一使用equals()方法*                *        - 注意:重写equals()方法的时候要彻底。(也就是说所有你自定义的类都有需要根据需要重写equals()方法)**      结论:在重写equals()方法的时候或编程的时候记住以下规矩:*           java中基本数据类型比较是否相等使用"=="*           java中所有的引用数据类型判断是否相等统一使用"equals()"*/
public class Student {
//    学号private int no;
//    所在学校private String school;
//    无参构造方法public Student() {}//    有参构造方法public Student(int no, String school) {this.no = no;this.school = school;}//    set and get 方法public int getNo() {return no;}public void setNo(int no) {this.no = no;}public String getSchool() {return school;}public void setSchool(String school) {this.school = school;}//    重写toString()方法@Overridepublic String toString() {return "学号:" + no + ",所在学校:" + school;}//    重写equals()方法public boolean equals(Object o){//"o == null"表示引用"o"是空;"!(o instanceof Student)"表示引用o不是Student类型,这两种情况肯定不相等,所以返回falseif (o == null || !(o instanceof Student)) {return false;}//"this == o"表示两个对象的内存地址相等,既然内存地址相等,表示是同一个对象,一定相等,所以返回trueif (this == o){return true;}//程序执行到此表示引用"o"一定是Student类型,所以可以直接向下转型。//注意:这里的引用"o"必须要向下转型,因为是调用子类特有的属性,父类没有这个属性不能直接用引用"o"去调用//      也就是说:不能直接"no == o.no"也不能直接"school.equals(o.school)"Student s = (Student)o;//以下代码比较基本数据类型使用"==",比较引用数据类型使用"equals()"//no是基本数据类型,比较时使用"==";school是"String"类型,它属于引用数据类型,比较时使用equals()方法//"no == s.no && school.equals(s.school)"的运行结果一定是boolean类型其结果只有两种分别是:true或falsereturn no == s.no && school.equals(s.school);}
}
class StudentText{public static void main(String[] args) {Student s1 = new Student(11111,"抚宁一中");Student s2 = new Student(11111,"抚宁一中");System.out.println(s1 == s2);//false "=="比较的是内存地址System.out.println(s1.equals(s2));//true equals()比较的是内容}
}

相关内容

热门资讯

AI做攻略、“双向奔赴”……国... 本文转自:人民网人民网记者 许维娜今年国庆假期,AI(人工智能)成了不少年轻人的“旅行搭子”。行前做...
合肥的这个“梗”, 翻篇了 社交平台的评论区,曾长期流传一句专属于合肥的黑色幽默。有人问合肥哪里好玩,本地网友半开玩笑地回复:合...
7万+旅游中高层都在的群,今天... 做旅游这行,资源卡位、渠道互通、项目落地——往往就差一个“对的机会”。我们的行业社群已聚集70,00...
一场帐篷音乐节,如何让井研从“... 帐篷音乐节现场封面新闻记者 周洪攀10月的研溪湿地,晚风里裹着柑橘的清甜与民谣的回响。夜幕降临,10...
白鹤翩翩落星愿,上海迪士尼度假... 10月9日,世界候鸟日前夕,上海迪士尼度假区星愿公园的湖风里多了一分白鹤的灵动。三座白鹤雕塑正式揭幕...
成都锦江边赏初秋枫叶飘飘 目前,成都锦江边国华街枫叶树红了。近年来,国华街附近的几条街都栽种了红枫树,是城区较集中看枫叶的点位...
GBTA:商务旅行正在复苏,但... 亚太正在成为全球商务旅行增长的重要引擎。在经历疫情后的快速反弹之后,全球商务旅行正在进入一个新的增长...
从景区焕新到节赛引流 邹城双节... 齐鲁网·闪电新闻10月9日讯 中秋、国庆“双节”假期,邹城市文化和旅游局提前谋划、周密部署,立足自身...
江山如此多娇 且看石楼今朝 金秋十月,黄河岸畔秋意盎然,丰收盛会喜迎国庆。本次石楼国庆文旅活动以“江山如此多娇,且看石楼今朝”为...
海南国庆假期接待游客475.4... 2026年国庆假期,海南接待游客475.40万人次,较2025年增长13.1%,较2024年增长15...