【Java】Object类中的toString、equals方法

news2024/11/24 3:05:56
Object类

所有类都直接或间接的继承自Object类,Object类是所有Java类的根基类。

也就意味着所有的Java对象都拥有Object类的属性和方法。

如果在类的声明中未使用extends关键字指明其父类,则默认继承Object类。

toString()方法

【1】Object类的toString()的作用:

方法的原理:

现在,使用toString方法的时候,打印出来的东西 “不好看”,对于其他人来说不友好,可读性不好

我们现在是想知道对象的信息,名字,年龄,身高。。。。。。

现在的格式不好:

出现的问题:子类Student对父类Object提供的toString方法不满意,不满意--》对toString方法进行重写:

  1. package com.star.test01;
  2. /**
  3.  * @Auther: Starshine
  4.  */
  5. public class Student /*extends Object*/{
  6.     private String name;
  7.     private int age;
  8.     private double height;
  9.     public String getName() {
  10.         return name;
  11.     }
  12.     public void setName(String name) {
  13.         this.name = name;
  14.     }
  15.     public int getAge() {
  16.         return age;
  17.     }
  18.     public void setAge(int age) {
  19.         this.age = age;
  20.     }
  21.     public double getHeight() {
  22.         return height;
  23.     }
  24.     public void setHeight(double height) {
  25.         this.height = height;
  26.     }
  27.     public Student() {
  28.     }
  29.     public Student(String name, int age, double height) {
  30.         this.name = name;
  31.         this.age = age;
  32.         this.height = height;
  33.     }
  34.     public String toString() {
  35.         return "这是一个Student对象,这个对象的名字:"+name+",年龄:"+age+",身高:"+height;
  36.     }
  37. }

测试类:

总结:toString的作用就是对对象进行“自我介绍”,一般子类对父类提供的toString都不满意,都要进行重写。

IDEA提供了快捷键:

  1. package com.star.test01;
  2. /**
  3.  * @Auther: Starshine
  4.  */
  5. public class Student /*extends Object*/{
  6.     private String name;
  7.     private int age;
  8.     private double height;
  9.     public String getName() {
  10.         return name;
  11.     }
  12.     public void setName(String name) {
  13.         this.name = name;
  14.     }
  15.     public int getAge() {
  16.         return age;
  17.     }
  18.     public void setAge(int age) {
  19.         this.age = age;
  20.     }
  21.     public double getHeight() {
  22.         return height;
  23.     }
  24.     public void setHeight(double height) {
  25.         this.height = height;
  26.     }
  27.     public Student() {
  28.     }
  29.     public Student(String name, int age, double height) {
  30.         this.name = name;
  31.         this.age = age;
  32.         this.height = height;
  33.     }
  34.     /*public String toString() {
  35.         return "这是一个Student对象,这个对象的名字:"+name+",年龄:"+age+",身高:"+height;
  36.     }*/
  37.     @Override
  38.     public String toString() {
  39.         return "Student{" +
  40.                 "name='" + name + '\'' +
  41.                 ", age=" + age +
  42.                 ", height=" + height +
  43.                 '}';
  44.     }
  45. }

equals方法

  1. package com.star.test02;
  2. /**
  3.  * @Auther: Starshine
  4.  */
  5. public class Phone {//手机类:
  6.     //属性:
  7.     private String brand;//品牌型号
  8.     private double price;//价格
  9.     private int year ;//出产年份
  10.     //方法:
  11.     public String getBrand() {
  12.         return brand;
  13.     }
  14.     public void setBrand(String brand) {
  15.         this.brand = brand;
  16.     }
  17.     public double getPrice() {
  18.         return price;
  19.     }
  20.     public void setPrice(double price) {
  21.         this.price = price;
  22.     }
  23.     public int getYear() {
  24.         return year;
  25.     }
  26.     public void setYear(int year) {
  27.         this.year = year;
  28.     }
  29.     @Override
  30.     public String toString() {
  31.         return "Phone{" +
  32.                 "brand='" + brand + '\'' +
  33.                 ", price=" + price +
  34.                 ", year=" + year +
  35.                 '}';
  36.     }
  37.     //构造器:
  38.     public Phone() {
  39.     }
  40.     public Phone(String brand, double price, int year) {
  41.         this.brand = brand;
  42.         this.price = price;
  43.         this.year = year;
  44.     }
  45.     //对equals方法进行重写:
  46.     public boolean equals(Object obj) {//Object obj = new Phone();
  47.         //将obj转为Phone类型:
  48.         Phone other = (Phone)obj;//向下转型,为了获取子类中特有的内容
  49.         if(this.getBrand()==other.getBrand()&&this.getPrice()==other.getPrice()&&this.getYear()==other.getYear()){
  50.             return true;
  51.         }
  52.         return false;
  53.     }
  54. }

  1. package com.star.test02;
  2. /**
  3.  * @Auther: Starshine
  4.  */
  5. public class Test {
  6.     //这是一个main方法,是程序的入口:
  7.     public static void main(String[] args) {
  8.         //创建Phone类的对象:
  9.         Phone p1 = new Phone("华为P40",2035.98,2020);
  10.         Phone p2 = new Phone("华为P40",2035.98,2020);
  11.         //比较两个对象:p1和p2对象:
  12.         //==的作用:比较左右两侧的值是否想的,要么相等,返回true,要么不相等,返回false
  13.         System.out.println(p1==p2);//-->>>对于引用数据类型来说,比较的是地址值。--->一定返回的是false
  14.         //Object类提供了一个方法 equals方法 :作用:比较对象具体内容是否相等。
  15.         boolean flag = p1.equals(p2);//点进源码发现:底层依旧比较的是==,比较的还是地址值。
  16.         System.out.println(flag);
  17.     }
  18. }

总结:

equals作用:这个方法提供了对对象的内容是否相等 的一个比较方式,对象的内容指的就是属性。

父类Object提供的equals就是在比较==地址,没有实际的意义,我们一般不会直接使用父类提供的方法,

而是在子类中对这个方法进行重写。

instanceof

利用集成开发工具生成equals方法

【1】利用eclipse:

【2】利用idea:

类和类的关系

代码

总结:

【1】面向对象的思维:找参与者,找女孩类,找男孩类

【2】体会了什么叫方法的性擦,什么叫方法的实参:

具体传入的内容 实参:

【3】类和类可以产生关系:

(1)将一个类作为另一个类中的方法的形参

(2)将一个类作为另一个类的属性

  1. public class Girl {
  2.     //属性:
  3.     String name;
  4.     double weight;
  5.     Mom m /*= new Mom()*/;
  6.     //方法:
  7.     public void add(int a){//参数是基本数据类型
  8.         System.out.println(a);
  9.         System.out.println(a+100);
  10.     }
  11.     //谈恋爱的方法:
  12.     public void love(Boy b){//参数是引用数据类型Boy
  13.         System.out.println("我男朋友的名字是:"+b.name+",我男朋友的年龄是:"+b.age);
  14.         b.buy();
  15.     }
  16.     //女孩跟妈妈聊天:
  17.     public void wechat(){
  18.         m.say();
  19.     }
  20.     //构造器:
  21.     public Girl(String name, double weight) {
  22.         this.name = name;
  23.         this.weight = weight;
  24.     }
  25. }

  1. public class Boy {
  2.     //属性:
  3.     int age;
  4.     String name;
  5.     //方法:
  6.     public void buy(){
  7.         System.out.println("跟我谈恋爱,我给你买买买。。。");
  8.     }
  9.     //构造器:
  10.     public Boy(int age, String name) {
  11.         this.age = age;
  12.         this.name = name;
  13.     }
  14. }

  1. public class Mom {
  2.     //方法:
  3.     public void say(){
  4.         System.out.println("妈妈唠唠叨叨 都是爱,听妈妈的话。。");
  5.     }
  6. }

  1. public class Test {
  2.     //这是一个main方法,是程序的入口:
  3.     public static void main(String[] args) {
  4.         //创建一个Boy类的具体的对象:
  5.         Boy boy = new Boy(30,"鹿晗");
  6.         //创建一个Girl类的具体的对象:
  7.         Girl girl = new Girl("关晓彤",100);
  8.         //谈恋爱:
  9.         //girl.love(boy);
  10.         Boy boy2 = new Boy(35,"陈伟霆");
  11.         girl.love(boy2);
  12.         //还可以跟妈妈微信聊天:
  13.         girl.m = new Mom();
  14.         girl.wechat();
  15.     }
  16. }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1826997.html

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

相关文章

植物大战僵尸杂交版 v2.0.88 mac版 Plants vs. Zombies 杂交版下载

特别注意:该游戏最低系统要求为macOS Sonoma 14.X,低于此系统版本的请勿下载! 游戏介绍 植物大战僵尸杂交版是由B站UP主“潜艇伟伟迷”制作的一款结合了《植物大战僵尸》原有元素与创新玩法的游戏。这款游戏以其独特的“杂交”植物概念在B站…

【TypeScript】泛型工具

跟着 小满zs 学 ts:学习TypeScript24(TS进阶用法-泛型工具)_ts泛型工具-CSDN博客 Partial 所有属性可选的意思Required 所有属性必选的意思Pick 提取部分属性Exclude 排除部分属性emit 排除部分属性并且返回新的类型 Partial 属性变为可选。…

Python基础教程(二十):SMTP发送邮件

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

Python 小市值股票模型代码及回测分析

目录 一、模型介绍 二、代码详解 2.1 初始化函数 2.2 股票筛选过滤函数 2.3 止损函数 2.4 开盘时运行函数 2.5 调仓函数 三、回测结果分析 3.1 收益净值图与概述 3.2 模型收益概览 3.3 年度收益图 3.4 月度收益的时间序列 3.5 月度收益热力图 3.6 月度收益频次分…

CorelDraw 2024软件安装包下载 丨不限速下载丨亲测好用

​简介: CorelDRAW Graphics Suite 订阅版拥有配备齐全的专业设计工具包,可以通过非常高的效率提供令人惊艳的矢量插图、布局、照片编辑和排版项目。价格实惠的订阅就能获得令人难以置信的持续价值,即时、有保障地获得独家的新功能和内容、…

conda安装pytorch使用清华源

原命令,例: # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch使用清华源,例: # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatool…

Qwen2——阿里巴巴最新的多语言模型挑战 Llama 3 等 SOTA

引言 经过几个月的期待, 阿里巴巴 Qwen 团队终于发布了 Qwen2 – 他们强大的语言模型系列的下一代发展。 Qwen2 代表了一次重大飞跃,拥有尖端的进步,有可能将其定位为 Meta 著名的最佳替代品 骆驼3 模型。在本次技术深入探讨中,我…

【redis的基本数据类型】

基本数据类型 Redis的基本数据类型有五种,分别是 StringListHashSetSortedSet 这些基本的数据类型构成了其他数据类型的基石,而这些基本数据类型又对应着不同的底层实现,不同的底层实现往往是针对不同的使用场景做的特殊的优化,…

探索档案未来,尽在ARCHE-2024

2024年第三届上海国际智慧档案展览会暨高峰论坛(ARCHE-2024)将于2024年6月19日至21日在上海跨国采购会展中心隆重举行。深圳市铨顺宏科技有限公司应邀参展,将以全新形象盛装亮相,展示其在档案管理领域的最新技术和解决方案。 ARC…

Linux系统脚本开机自启动,开机自启动jar包vue前台等

脚本内容jiaobenname.sh #!/bin/bash # 设置环境变量 export JAVA_HOME/usr/local/java/jdk-17.0.10 export CLASSPATH.:$JAVA_HOME/lib/ export PATH.:$JAVA_HOME/bin:$PATHwhile true; doif ps aux | grep -v grep | grep "tomcat" > /dev/null; thenecho &quo…

Vue42-vc与vm的原型对象

一、普通函数与其对象的原型对象 显示原型属性,只有函数才有!!! 实例对象只有隐式原型属性。 普通函数与其对象,指向同一个原型对象!!! 这么写不推荐,建议直接如下格式&a…

C++初学者指南第一步---2. Hello world

C初学者指南第一步—2. Hello world 目录 C初学者指南第一步---2. Hello world1.源文件 “Hello.cpp”2.编译hello.cpp3.术语4.编译器标志5.不要使用 “using namespace std;” &#xff01; 1.源文件 “Hello.cpp” #include <iostream> // our first program int main…

3.多层感知机

目录 1.感知机训练感知机XOR问题&#xff08;Minsky&Papert 1969&#xff09; AI的第一个寒冬总结 2.多层感知机(MLP)学习XOR单隐藏层&#xff08;全连接层&#xff09;激活函数&#xff1a;Sigmoid激活函数&#xff1a;Tanh激活函数&#xff1a;ReLu 最常用的 因为计算速度…

LLM 学习之「向量数据库」

LLM 学习之「向量数据库」 什么是向量数据库&#xff1f; 向量数据库是一种以向量或数据点的数学表示形式存储数据的数据库。 人工智能和机器学习使非结构化数据能够转换为捕获意义和上下文的数字表示&#xff08;向量&#xff09;&#xff0c;这得益于自然语言处理和计算机视…

VSCode格式化插件-prettier

VSCode格式化插件 1.安装插件&#xff1a;prettier 2.设置默认格式化工具 设置中&#xff0c;搜索 “Default Formatter”。 在编辑器设置中&#xff0c;将默认格式化工具设为 Prettier。 3.启用格式化选项&#xff1a; 在设置中搜索 “Format On Save”&#xff0c;并勾选…

git回滚项目至指定版本

用过两种方式 1.使用git命令 进入到项目目录地址&#xff0c;使用git log查看提交版本信息 按q退出 若非对应分支&#xff0c;使用git checkout 分支名 切换分支 这里回退至上一个版本 git reset --hard 版本号 再次推送即可 这里需要使用-f命令 强行推送 2.在pycharm中…

12.容器间的互联(--link 是单方向的!!!)

容器间的互联&#xff08;–link 是单方向的&#xff01;&#xff01;&#xff01;&#xff09; –link意思就是链接容器进行通信 用法&#xff1a;--link 容器名字:随意设置别名&#xff1b;例如&#xff1a;--link nginx:nginx 注释&#xff1a;同一个容器中&#xff0c;可…

C#的Switch语句(在C#中如何根据结果执行不同的代码)

文章目录 基本语法示例 注意使用goto跳转其他标签 基本语法 switch语句是一种选择结构&#xff0c;用于基于某个表达式的值执行不同的代码块。它提供了一种更简洁、更易读的方式来处理多路分支逻辑&#xff0c;相比于多个嵌套的if…else if…else语句。下面是switch语句的基本…

C++语法07 程序中的除法和求余

程序中的除法 int / int int double / int double int / double double double / double double 规律总结 只要除号任意一边出现了double类型&#xff0c;结果就是double类型 只有除号两边都是int类型&#xff0c;结果才是int类型 这个规律也适用于加法减法和乘法 …

Mybatis框架中结果映射resultMap标签方法属性收录

Mybatis框架中结果映射resultMap标签收录 在MyBatis框架中&#xff0c;resultMap 是一种强大的机制&#xff0c;用于将数据库结果集映射到Java对象上。它允许你定义如何将查询结果中的列映射到Java对象的属性上&#xff0c;尤其是当数据库表的字段名与Java对象的属性名不一致时…