你了解Java中的Object类吗

任何一个类默认继承Object类,就算没有直接继承,最终也会间接继承。

Object类,有两种方式找到:

  1. 第一种:在源码当中找到
  2. 第二种:查阅java类库的帮助文档

Object类中两个重要的方法:

  1. boolean equals (Object obj) //判断两个对象是否相等
  2. String toString () //将对象转换成字符串形式

equals方法:

源代码:

public boolean equals(Object obj) {
        return (this == obj);
    }

作用:通过调用这个方法可以判断两个对象是否相等

class MyTime {
	int year;
	int month;
	int day;

	public MyTime() {
		super();
	}

	public MyTime(int year, int month, int day) {
		super();
		this.year = year;
		this.month = month;
		this.day = day;
	}
}
public class Test02 {
	public static void main(String args[]) {
		// 判断两个基本数据类型的数据是否相等,,直接使用”==“就行
		int a = 100;
		int b = 100;
		// 这个等号判断的是a中保存的100和b中保存的100是否相等
		System.out.println(a == b);// true(相等) false(不相等) 结果为true

		MyTime t1 = new MyTime(2021, 9, 15);
		MyTime t2 = new MyTime(2021, 9, 15);
		// 这个等号判断的是t1保存的对象的内存地址和t2保存的对象的内存地址是否相等
		System.out.println(t1 == t2);// 结果为false
	}
}
        // 重写Object的equals方法之前(比较的是内存地址)
		boolean s = t1.equals(t2);
		System.out.println(s);// 结果为false

判断两个对象是否相等不能用“==”,因为”==“判断的是两个对象的内存地址,然而在Object类中的equals方法当中,默认采用的是”==“判断两个java对象是否相等。而”==“判断的是两个java对象的内存地址是否相等,我们应该判断的是两个java对象的内容是否相等,equals方法无法满足,需要子类重写equals。

public boolean equals(Object obj) {
		// 当年月日都分别相等时,表示两个日期相同
		// 获取第一个日期的年月日
		int year1 = this.year;
		int month1 = this.month;
		int day1 = this.day;
		// 获取第二个日期的年月日
		if (obj instanceof MyTime) {
			MyTime t = (MyTime) obj;
			int year2 = t.year;
			int month2 = t.month;
			int day2 = t.day;
			if (year1 == year2 && month1 == month2 && day1 == day2) {
				return true;
			}
		}
		return false;
	}
// 重写Object的equals方法之后(比较的是内容)
		boolean t = t1.equals(t2);
		System.out.println(s);// 结果为true

toString方法:

源代码:

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

源代码上toString方法的默认实现:类名@对象的内存地址转换为十六进制的形式。

作用:通过调用这个方法可以将一个“Java对象”转换成“字符串形式的表示形式“。(建议所有子类都重写此方法)

class MyTime {
	int year;
	int month;
	int day;

	public MyTime() {
		super();
	}

	public MyTime(int year, int month, int day) {
		super();
		this.year = year;
		this.month = month;
		this.day = day;
	}

	@Override
	public String toString() {
		return "MyTime [year=" + year + ", month=" + month + ", day=" + day + "]";
	}

}
public class Test01 {
	public static void main(String args[]) {
		MyTime t1 = new MyTime(2021, 9, 15);
		String s1 = t1.toString();
		// MyTime类重写toString方法之前
		System.out.println(s1);// com.MyTime@15db9742
		// MyTime类重写toString方法之后
		System.out.println(s1);// MyTime [year=2021, month=9, day=15]

	}
}

注:输出引用时,会自动调用toString方法,即s1等同于s1.toString()。

到此这篇关于你了解Java中的Object类吗 的文章就介绍到这了,更多相关Java Object类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一篇文章带你了解java Object根类中关于toString,equals的方法

    目录 toString: 代码案例: equals: 代码案例: 总结 toString: 概念:拼接对象的地址值:toString()方法用于返回表示对象值的字符串(返回的是String对象). 快捷写法:Alt+Insert,直接会显示toString的方法,选取需要返回的对象就行. 代码案例: 定义一个person类,属性如下: (1)身份证号,性别,姓名,年龄,户籍,出生日期(Data类型,需要引用java.uitl.Data)功能: (2)自我介绍:介绍格式:(toString) 身份

  • Java基础之Object类详解

    object类的介绍 object是所有类的直接父类或者是间接父类,为什么这么说呢? 可以查询java8的API帮助文档: 可见在这样的一个类树中,所有的类的根还是Object类 在IDEA中新建一个类,系统会默认继承Object类 public class Pet extends Object{ } 那么Dog继承了Pet类的属性和行为方法,还会继承Object类的属性和行为方法了吗?这一点是肯定的,Pet类作为Object类的子类,Dog类作为Pet类的子类,所以说Object是Dog类的间

  • 深入了解Java核心类库--Objects类

    目录 1 Objects 1.1 Objects方法 1.2 Objects常用方法 1.2.1 equals(Object a, Object b) 1.2.2 isNull(Object obj) 1.2.3 nonNull(Object obj) 1.2.4 requireNonNull(T obj) 1.3 Objects源码 2 区别于Object 2.1 Object构造方法 2.2 Object其他方法 2.2.1 equals(Object obj) 2.2.2 toString

  • java 实现将Object类型转换为int类型

    如何将Object类型转换为int类型 Object object = null; try { Integer.parseInt(object.toString()); } catch (NumberFormatException e) {} 也可以先判定一下是否是Integer //可以先判定一下是否是Integer Object object = "111"; if (object instanceof Integer) { Integer.parseInt(object.toSt

  • 深入理解JAVA基础类库中对象Object类

    引言 Object类是所有类.数组的父类,位于java.lang 包下也就是说,Java允许把所有任何类型的对象赋给Object类型的变量.当定义一个类时没有使用extends关键字为它显式指定父类,则该类默认继承Object父类. 例如: public class Dog{ ...... } 等价于: public class Dog extends Object { ...... } Object常用方法 Object 类属于java.lang包,此包下的所有类在使用时无需手动导入,系统会在

  • 你了解Java中的Object类吗

    任何一个类默认继承Object类,就算没有直接继承,最终也会间接继承. Object类,有两种方式找到: 第一种:在源码当中找到 第二种:查阅java类库的帮助文档 Object类中两个重要的方法: boolean equals (Object obj) //判断两个对象是否相等 String toString () //将对象转换成字符串形式 equals方法: 源代码: public boolean equals(Object obj) { return (this == obj); } 作

  • java中的Object类的toSpring()方法

    Object是类层次结构的根,每个类都可以将Object作为超类.所有类都直接或者间接的继承自该类 构造方法:public Object() 回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法? 因为它们的顶级父类只有无参构造方法 package com.itheima_56; public class Student extends Object{ private String name; private int age; public Student(){ } public

  • 一文带你了解Java中的Object类及类中方法

    目录 1. Object类介绍 2. 重写toString方法打印对象 3. 对象比较equals方法 4. hashCode方法 1. Object类介绍 Object是Java默认提供的一个类.Java里面除了Object类,所有的类都是存在继承关系的.默认会继承Object父 类.即所有类的对象都可以使用Object的引用进行接收. 范例:使用Object接收所有类的对象 class Person{} class Student{} public class Test { public s

  • Java中的Object类详细介绍

    理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省略了extends Object关键字. 该类中主要有以下方法: toString(),getClass(),equals(),clone(),finalize(), 其中toString(),getClass(),equals是其中最重要的方法. 注意: Object类中的getClass(),notify(),notifyAll(),wait()等方法被定义为f

  • 简介Java编程中的Object类

    Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: public class Demo{ // ... } 实际上是下面代码的简写形式: public class Demo extends Object{ // ... } 在Java中,只有基本类型不是对象,例如数值.字符和布尔型的值都不是对象,所有的数组类型,不管是对象数组还是基本类型数组都是继承自

  • 基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象.java默认的分隔符是"空格"."制表符('\t')"."换行符('\n')"."回车符('\r')". StringTokenizer(String str,String delim)

  • 详谈Java中的Object、T(泛型)、?区别

    因为最近重新看了泛型,又看了些反射,导致我对Object.T(以下代指泛型).?产生了疑惑. 我们先来试着理解一下Object类,学习Java的应该都知道Object是所有类的父类,注意:那么这就意味着它的范围非常广!首先记住这点,如果你的参数类型时Object,那么的参数类型将非常广! <Thinking in Java>中说很多原因促成了泛型的出现,最引人注目的一个原因就是为了创造容器类.这个要怎么来理解呢?我的理解是,可以抛开这个为了创造容器类这个,而是回到泛型的目的是限定某种类型上来.

  • Java中父类Object的常用方法总结

    简介 Object类: 这个类java.lang.java是所有类默认继承的父类 Object类中常用的三个方法:toString() , equal() , hashCode() 一.toString()方法 对象的自我描述,对象的自我介绍 在对象的自我描述过程中,由于使用get()方法打印实例变量比较麻烦,为了简便,使用toString() . Public String toString(){ Return "学好" + getNo() + "姓名" + ge

  • java基础之Object类

    Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: public class Demo{ // ... } 实际上是下面代码的简写形式: public class Demo extends Object{ // ... } 在Java中,只有基本类型不是对象,例如数值.字符和布尔型的值都不是对象,所有的数组类型,不管是对象数组还是基本类型数组都是继承自

随机推荐