【equals比较方法 和 内部类】

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

文章目录

  • 前言
  • 对象比较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.mzph.cn/news/129259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 C# 在Word中插入图表

Word中的图表功能将数据可视化地呈现在文档中。这为展示数据和进行数据分析提供了一种方便且易于使用的工具,使作者能够以直观的方式传达信息。要通过C#代码来实现在Word中绘制图表,可以借助 Spire.Doc for .NET 控件,具体操作参考下文。 目录…

关于GLibC

查看使用的编译器依赖glibc库位置: gcc --print-file-namelibc.a gcc --print-file-namelibc.so

Qt扫盲-QFont理论总结

QFont 理论总结 一、概述二、使用三、字体匹配算法 一、概述 QFont类指定用于绘制文本的时候来描述字体的工具类。QFont可以看作是对系统上一个或多个字体的查询。 当我们创建QFont对象时,我们可以指定希望字体具有的各种属性。Qt将使用具有指定属性的字体&#x…

初学Redis简介以及入门

🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​ 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这…

详解Java经典数据结构——HashMap

Java 的 HashMap 是一个常用的基于哈希表的数据结构,它实现了 Map 接口,可以存储键值对。下面我们进行详细介绍: 基本结构:HashMap 底层是基于哈希表来实现的,每次插入一个键值对时,会先对该键进行 Hash 运…

ARM传输数据以及移位操作

3.2.2 数据传送指令 LDR/STR指令用来在寄存器和内存之间输送数据。如果我们想要在寄存器之间传送数据,则可以使用MOV指令。MOV指令的格式如下。 MOV {cond} {s}Rd, oprand2 MOV {cond} {s}Rd, oprand2 其中,{cond}为条件指令可选项,{s}用来表…

Android Studio创建项目后Gradle(构建)项目很慢问题解决

Android Studio创建项目后Gradle(构建)项目很慢问题解决 在使用Android Studio创建项目时,会自动从网上下载相关依赖。由于是访问国外服务器,会出现构建项目时下载依赖很慢的问题。为了解决该问题,需要在settings.gradle(或者settings.gradl…

Android 交叉编译openssl 、libxml2静态库

openssl: Android下openssl编译和使用(一)_安卓编译openssl 交叉编译 for arch in armeabi-v7a arm64-v8a-CSDN博客 libxml2: LIBXML2 2.9.11 build for Android_libxml2 android静态库_fredhurui的博客-CSDN博客

EthernetIP主站转EtherCAT协议网关采集电力变压器的 Ethernet IP 数据

怎么通过捷米JM-EIPM-ECT网关把ABB电力变压器的 Ethernet IP 数据,连接到欧姆龙PLC上,通过plc去监控电力设备的数据呢,下面是介绍简单的连接方法,采集Ethernet IP从站数据和EtherCAT协议 1 ,捷米JM-EIPM-ECT网关连接Et…

11.3 知识总结(jQuery入门)

一、 jQuery入门 1.1 介绍 jQuery是一个轻量级的、兼容多浏览器的JavaScript库。jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Write less, do more.“ 1.2 优…

C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish

前言 今天给大家推荐一个C#开源且免费的能利用Windows通知栏背单词的软件,可以让你在上班、上课等恶劣环境下安全隐蔽地背单词(利用摸鱼时间背单词的软件):ToastFish。 操作系统要求 目前该软件只支持Windows10及以上系统&…

纷享销客荣获最佳制造业数字营销服务商奖

2023年10月26日,第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家,共同探讨如何通过数字化转型赋能企业自身成长,实现信息化向数字化的升级转型。 在本次盛会上,纷享销客以其卓越的基本面、…

EasyFlash移植使用- 关于单片机 BootLoader和APP均使用的情况

目前,我的STM32单片机,需要在BootLoader和APP均移植使用EasyFlash,用于参数管理和IAP升级使用。 但是由于Flash和RAM限制,减少Flash占用,我规划如下: BootLoader中移植EasyFlash使用旧版本,因为…

centos7-lamp

目录 一、安装 1.关闭防火墙关闭selinux 2.安装apache 3.配置主页 二、部署mariadb(mysql) 1.用yum安装 2.启动数据库 3.看下端口是否listen 4登录mysql 5.修改下密码 三、安装php 1.安装依赖包 2.安装php解释器和php连接mysql驱动 3.配置…

GPT引发智能AI时代潮流

最近GPT概念爆火,许多行业开始竞相发展AI ,工作就业也将面临跳转,目前测试就业形势就分为了两大类,一类是测试行业如功能、性能、自动化综合性人才就业技能需求,另一类便是AI测试行业的需求普遍增长,原本由…

linux 上flink单机安装详解

目录 一 准备安装包 二 解压 三 配置环境变量 四 验证是否部署成功 一 准备安装包 官网地址: Downloads | Apache Flink 百度网盘资源: 链接: https://pan.baidu.com/s/15aXmF3JLxnOlPiDxId637Q?pwdsqsx 提取码: sqsx 这里准备的版本是flink1.13…

C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。

矩阵形式: 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 完整代码: /*编写以下函数 1.在一个二维数组中形成如以下形式的 n 阶矩阵: 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 2.去掉…

快速入手maven

文章目录 Maven介绍Maven安装和配置基于IDEA的Maven工程创建梳理Maven工程GAVP属性Idea构建Maven JavaSE工程Idea构建Maven JavaEE工程1. 手动创建2. 插件方式创建 Maven工程项目结构说明Maven核心功能依赖和构建管理依赖传递和冲突依赖导入失败场景和解决方案扩展构建管理和插…

天猫商品评论API接口(评论内容|日期|买家昵称|追评内容|评论图片|评论视频..)

要获取天猫商品评论接口,您需要使用天猫开放平台提供的API接口。以下是一些可能有用的步骤: 注册并登录天猫开放平台,获取开发者账号。在开发者中心创建一个应用,获取应用的App Key和App Secret。使用天猫开放平台的API接口&…

微服务之负载均衡使用场景

在如见常见微服务系统中,负载均衡组件是一种将流量分配到多个服务的技术,目的是提高系统的性能和可用性。负载均衡有两种常见的模式:服务端模式和客户端模式。服务端模式使用独立的应用程序(如 Nginx)来转发请求&#…