【equals比较方法 和 内部类】

news/2024/11/8 23:06:01/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 对象比较equals方法
  • 内部类
  • 实例内部类
  • 静态内部类
  • 总结


前言

对象比较equals方法

三种比较相等方法:
第一种,如果==两侧是基本数据类型,则比较变量的值是否相等
第二种,如果 == 两侧是引用数据类型,则比较引用变量的地址是否相等
第三种,如果要比较引用对象的值是否相等,则要重写Object中的equals方法

class Student{public String name;public int age;//构造方法初始化成员变量public Student(String name, int age) {this.name = name;this.age = age;}//重写toString方法@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}//重写equals方法@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}
public class Test {public static void main(String[] args) {Student student = new Student("藏三",6);Student student2 = new Student("藏三",6);//只是比较地址一样不一样System.out.println(student==student2);//这才是比较对象一样不一样System.out.println(student.equals(student2));}
}

结论:比较对象中内容是否相同的时候,一定要重写equals方法。

内部类

可以将一个类定义在另一个类或者一个方法的内部,
前者称为内部类,后者称为外部类
【注意事项】

  1. 定义在class 类名{}花括号外部的,即使是在一个文件里,都不能称为内部类
  2. 内部类和外部类共用同一个java源文件,但是经过编译之后,内部类会形成单独的字节码文件

实例内部类

即未被static修饰的成员内部类

// OutClass是外部类
// InnerClass是内部类
class OutterClass{public int date1 = 9;public static int date2 = 77;private  int date3 =66 ;public void test(){InnerClass innerClass = new InnerClass();//在外部类实例化实例内部类System.out.println("OutterClass:test()");}//实例内部类:即未被static修饰的成员内部类。class InnerClass{public int date1 = 111;public int date4 = 44;public static final int date5 = 10;private int date6 = 7;public void test(){System.out.println("InnerClass:test()");System.out.println(date1);//实例内部类有date1,外部类也有date1,优先访问实例内部类的System.out.println(OutterClass.this.date1);//访问外部类,用外部类类名点this点变量名System.out.println(date2);System.out.println(date3);System.out.println(date4);System.out.println(date5);System.out.println(date6);}}
}
public class Test {public static void main(String[] args) {OutterClass outterClass = new OutterClass();//实例化实例内部类对象//要先实例化外部类对象,// 然后在实例化内部类的=号左边加大驼峰外部类类名和.  右边加小驼峰外部类类名和.OutterClass.InnerClass innerClass = outterClass.new InnerClass();innerClass.test();}
}

静态内部类

class OuterClass{public int date1 = 1;private int date2 = 2;public static int date3 = 3;//静态内部类static class InterClass{public int  date4 = 4;public static int date5 = 5;private  int date6 = 6;public void test(){System.out.println("InterClass:test()");
//            System.out.println(date1);//不能调用非静态的成员变量
//            System.out.println(date2);//可以用外部类间接访问OuterClass outerClass = new OuterClass();System.out.println(outerClass.date1);System.out.println(outerClass.date2);System.out.println(date3);System.out.println(date4);System.out.println(date5);System.out.println(date6);}}public void test(){System.out.println("OuterClass:test()");}
}public class Test {public static void main(String[] args) {//静态内部类的实例化OuterClass.InterClass interClass = new OuterClass.InterClass();interClass.test();}
}

总结

equals比较方法最核心是要重写Object中的equals方法,还有明白什么是外部类,内部类,以及实例内部类,静态内部类。


http://www.ppmy.cn/news/1195539.html

相关文章

[NOIP2017 提高组] 列队 题解

数据结构。 n 1 n1 n1 的 case:考虑有 m q mq mq 个位置,出队的人直接添加到队尾。维护位置对应的人,每次查询第 k k k 个人的位置。 实现考虑维护 01 序列,表示位置上是 / 否有人,每次查前缀和为 k k k 的位置即…

基于51单片机电子秤-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器,液晶1602显示,HX711模块,按键设置单价,计算总价,超量程报警,蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 I…

怎样做好金融投资翻译

我们知道, 金融投资翻译所需的译文往往是会议文献、年终报表、信贷审批等重要企业金融资料,其准确性事关整个企业在今后一段时期内的发展战略与经营成效。尤其像年报,对于上市公司来说更是至关重要的。那么,怎样做好金融投资翻译&…

精品基于Python的气象预报系统-爬虫

《[含文档PPT源码等]精品基于Python的气象预报系统-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术&#xff…

学习编程语言需要具备哪些数学基础?

学习编程语言需要具备的数学基础是一个非常广泛和深入的话题。 在计算机科学和软件工程领域,数学与编程语言密不可分,其中包括离散数学、统计学、算法分析等领域。 这里将从以下四个方面详细论述学习编程语言需要具备的数学基础:基本数学知…

(论文阅读14/100)End-to-end people detection in crowded scenes

文献阅读笔记 简介 题目 End-to-end people detection in crowded scenes 作者 Russell Stewart, Mykhaylo Andriluka 原文链接 https://arxiv.org/pdf/1506.04878.pdf 关键词 Null 研究问题 当前的人员检测器要么以滑动窗口的方式扫描图像,要么对一组离…

【JVM经典面试题(五十二道)】

文章目录 JVM经典面试题(五十二道)引言1.什么是JVM 内存管理2.能说一下JVM的内存区域吗?3.说一下JDK1.6、1.7、1.8内存区域的变化?4.为什么使用元空间替代永久代作为方法区的实现?5.对象创建的过程了解吗?6…

后端nginx报reset by peer while reading upstream

目录 1 解决 1 解决 加大nginx请求体或者nginx缓存 或者浏览器读取json大小设置成—1