Object类中的方法

Object类中的方法

API(Application Programming Interface)

1.API

  • 应用程序编程接口

2.Java API

  • 就是Java提供给我们使用的类,这些类将底层的实现封装了起来
  • 我们不需要关心这些类是如何实现的,只需要学习这些类如何使用

Object类

1.Object类的概述

  • 类层次结构的根类
  • 所有类都直接或者间接的继承自该类

2.构造方法

  • public Object()
  • 子类的构造方法默认访问的是父类的无参构造方法

HashCode()方法

1方法声明

  • public int hashcode()

2.返回值

  • 返回该对象的哈希码值,默认情况下,该方法会根据对象的地址来计算

3.说明

  • 不同对象的hashcode()一般来说不会相同。但是,同一个对象的hashcode()值肯定相同
  • 不是对象的实际地址值,可以理解为逻辑地址值

4.方法

public native int hashCode();

案例分析

public class Demo2_HashCode {
	public static void main(String[] args) {
		Object obj1 = new Object();
		int HashCode = obj1.hashCode();
		System.out.println(HashCode);      //哈希码值:2055281021
	}
}

GetClass()方法

1方法声明

  • public final Class getClass()

2.返回值

  • 返回此Object的运行时类

3.说明

  • 可以通过Class类中的一个方法,获取对象的真实的全名称
  • public String getName()

4.方法

public final native Class<?> getClass();

案例分析

import Student.Student;

public class Demo3_GetClass {
	public static void main(String[] args) {
		Student s = new Student("张三",23);
		Class clazz = s.getClass();                 //获取该对象的字节码文件
		String name = clazz.getName();
		System.out.println(name);                  //Student.Student(对象的全名称)
	}
}

ToString()方法

1.方法声明

  • public String toString()

2.返回值

  • 返回该对象的字符串表示

3.说明

  • 他的值等于: getClass().getName() + “@” + Integer.toHexString(hashCode())

左边:类名
中间:@
右边:字节码的十六进制表示
这么写没有什么实际意义

  • 由于默认情况下的数据对我们来说没有意义,一般建议重写该方法

自动生成重写方法
Ctrl + Alt + s

4.方法

public String toString() {
	return "Student [name=" + name + ", age=" + age + "]";
}

案例分析

@Override
public String toString() {
	return "Student [name=" + name + ", age=" + age + "]";
}

public class Demo4_ToString {
	public static void main(String[] args) {
		Student s = new Student("张三",23);
		/*
		 String str = s.toString(); 
		 System.out.println(str);
		 */
		System.out.println(s.toString());
		System.out.println(s);             //如果直接打印队象的引用,会默认调用toString方法
		System.out.println("我的名字是:" + s.getName() +"," + "我的年龄是:" + s.getAge());
		/*
		Student [name=张三, age=23]
		Student [name=张三, age=23]
		我的名字是:张三,我的年龄是:23
		*/
	}
}

5.补充

  1. toString方法的作用:可以更方便的显示属性值
  2. getXxx方法是为了获取值,可以显示也可以赋值,或作其他操作

Equals()方法

1.方法声明

  • public boolean equals(Object obj)

2.返回值

  • 布尔类型

3.说明

  • 默认情况下比较的是对象的引用是否相等
  • 由于比较对象的引用没有意义,一般建议重写该方法

4.方法

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

案例分析

@Override
	public boolean equals(Object obj) {
		Student s = (Student)obj; 
		return this.name.equals(s.name) && this.age == s.age;
	}
     
public class Demo5_Equals {
	public static void main(String[] args) {
		Student s1 = new Student("张三",23);
		Student s2 = new Student("张三",23);
		boolean b = s1.equals(s2);               //比较两个对象是否相等(地址值)
		System.out.println(s1 == s2);          //比较地址值
		System.out.println(b);                    //重写后比较的是属性值
	}
}

5.==号和equals方法的区别

a:共同点

  • 都可以做比较,返回值都是Boolean

b:区别

  • ==号是比较运算符,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
  • equals方法只能比较的是引用数据类型,equals方法在没重写之前比较的是地址值,底层依赖的是== 号,但是比较地址值是,没有意义的,
    我们需要重写equals方法比较对象中的属性值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值