java中Object类的方法之toString 、equals
前言
这两天正在学习java常用类及方法,秉着学多少写多少,在这里分享刚刚学的内容。
Object类
Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类。当然,数组也继承了Object类。我又把Object类称之为上帝类,所有的类都默认继承此类。
toString方法
它的作用: 将java对象转换成字符串表达形式 。
默认程序中该toString类方法Object返回一个由其中的对象是一个实例。
该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示。
换句话说,这个方法返回一个等于下列值的字符串:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
一般程序都希望结果应该是一个简明扼要的表达,容易让人阅读。所以???? 建议所有子类覆盖此方法。
不废话,上代码????????????????????????????????????????????????????????????????
package TestCode;
//所有类默认继承object类 其中tostring用于将java对象转换为字符串的形式输出
//需要重写tostring方法
public class OverReadToString {
public static void main(String[] args) {
Mytime t=new Mytime(2021,1,20);
String a=t.toString();
System.out.println(a);
}
}
//定义一个类表示时间
class Mytime{
int year;
int month;
int day;
//无参构造方法
public Mytime() {
}
//有参构造方法
public Mytime(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
//重写toString
@Override
public String toString() {
return "当前时间为:"+this.year+"年"+this.month+"月"+this.day+"日";
}
}
这里我们只需要修改toString 方法中的ruturn 为我们希望它输出的内容即可
结果如图
equals方法
在java中基本数据类型可以直接使用“==”来判断是否相等,那引用数据类型呢?所以有了equals方法
它的作用: 判断两个对象(引用数据类型)是不是相等
比如说我新建两个不同对象,但存入内容相同如????
此时我想知道t1和t2是否相同,在这里不能直接用等号判断,因为等号用于判断基本数据类型,
如果使用了它就默认比较内存地址,返回值一定是不相同的,因为是两个对象,所以使用equals。
代码如????????????????????????????????????????????????????????????????
package TestCode;
//object 中的equals 用于判断两个对象是否相同
//重写其中的 equals方法
public class OverReadEquals {
public static void main(String[] args) {
Mytime1 t1 = new Mytime1(2021,1,20);
Mytime1 t2 = new Mytime1(2021, 1, 20);
boolean a = t1.equals(t2);
System.out.println(a);
}
}
class Mytime1 {
int year;
int month;
int day;
public Mytime1() {
}
public Mytime1(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
//重写equals方法
@Override
public boolean equals(Object obj){
//使用instanceof判断书否有继承关系然后进行转型
if (obj instanceof Mytime1){
Mytime1 t3=(Mytime1)obj;
if (this.year == t3.year && this.month==t3.month && this.day== t3.day){
return true;
}
}
return false;
}
}
小白提示:其中无参,有参,重写toString 都是可以非手写的 idea中 ctrl+ins键可快速生成(idea可真是一个强大的开发工具啊)
好了 目前就更新到这~~
声明
本人是刚开始自学java的小白一个,写博客作为练习java的记录,肯定还有诸多问题,评论区欢迎大家指点与讨论。
本文地址:https://blog.csdn.net/dm1215104744/article/details/112908912
推荐阅读
-
浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别
-
Java中数组操作 java.util.Arrays 类常用方法的使用
-
JSP中如何通过JSP调用类(.java)中的方法
-
java基础 静态 static 问在多态中,子类静态方法覆盖父类静态方法时,父类引用调用的是哪个方法?
-
荐 浅谈Java中类和对象的初始化、实例化以及方法重载的底层机制
-
关于Java类中的构造方法(基础详解):
-
Android中java.math.Math类常用的常量和方法
-
Java中Object对象的常用方法解析
-
在C#的类或结构中重写ToString方法的用法简介
-
Java日期时间API系列30-----Jdk8中java.time包中的新的日期时间API类,减少时间精度方法性能比较和使用。