java常见对象_Java 常见对象 01

本文详细介绍了Java中的Object类,包括其作为所有类的基类的地位,构造方法的默认行为,以及几个关键方法的使用:hashCode()用于获取对象的哈希码,getClass()返回运行时类,toString()提供对象的字符串表示,以及equals()用于判断对象间相等性。此外,还讨论了这些方法在实际开发中的重写和应用,强调了默认行为与自定义行为的区别。
摘要由CSDN通过智能技术生成

常见对象·Object类

Object类的概述

* A:Object 类概述

* 类层次结构的根类

* 所有类都直接或间接地继承自该类

* B:构造方法

* public Object()

* 回想为什么面向对象中说:

子类的构造方法默认访问的是父类的无参构造

e4b51fc457bdfee2ae37567015840c80.png

Object类的 hashcode() 方法 (在学集合时掌握)

* A:案例演示

* public int hashCode()

* a:返回该对象的哈希码值,默认情况下,该方法会根据对象的地址值来计算,调用系统的本地资源进行计算

* b:不同对象的 hashCode() 一般来讲不会相同,但是对同一个对象的 hashCode() 值肯定相同

* c:不是对象的实际地址值,可以理解为逻辑地址值

* 举例:物体和编号

9fbb8d823b0c64e60c32574778e1860f.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.heima.object;importcom.heima.bean.Student;public classDemo1_HashCode {public static voidmain(String[] args) {

Object obj1= newObject();int hashcode =obj1.hashCode();

System.out.println(hashcode);

Student s1= new Student("张三", 23);

Student s2= new Student("李四", 11); //不同对象的地址不同

System.out.println(s1.hashCode());//ctrl + alt + 下键 向下复制一行

System.out.println(s2.hashCode());

}

}

hashCode() 方法

Object类的 getClass() 方法 (在学反射时掌握)

* A:案例演示

* public final Class getClass()

* a:返回此 Object 对象的运行时类

* b:可以通过 Class 类中的一个方法,获取对象的真是类的全名称

* public String getName()

6a7ab44f1247921f1da032ec5c2e2e7f.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.heima.object;importcom.heima.bean.Student;public classDemo2_GetClass {public static voidmain(String[] args) {

Student s= new Student("张三", 18);//Class clazz = new Class();

Class clazz = s.getClass(); //获取该对象的字节码文件

String nameString = clazz.getName(); //获取类名

System.out.println(nameString);

}

}

getClass() 和 getName()

Object类的 toString() 方法

* A:案例演示

* public String toString()

* a:返回该对象的字符串表示

// 默认方法

publicString toString() {return getClass().getName() + "@" +Integer.toHexString(hashCode());

}

* b:它的值等于

* getClass() . getName() + "@" + Integer.toHexString(hashCode())

* c:由于默认状态下的数据对我们来说没有意义,一般建议重写该方法

* B:最终版本

* 自动生成

2ae2bb669ccfcc78245f082a75db3795.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@OverridepublicString toString() {return "Student [name=" + name + ", age=" + age + "]";

}

Student类 内重写 toString方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.heima.object;importcom.heima.bean.Student;public classDemo3_ToString {/** 重写前:

* 左边:类名

* 中间:@

* 右边:hashCode的十六进制表现形式*/

public static voidmain(String[] args) {

Student s= new Student("张三", 23);

String str=s.toString();//toString()的作用: 可以更方便地显示属性值//getXxx方法用于获取值,可以用于显示,也可以对值进行操作

System.out.println(str);

System.out.println(s);//如果直接打印对象名,会默认调用toString方法//alt shift s 重写toString方法

}

}

toString() 方法

Object类的 equals() 方法

* A:案例演示

* a:指示其他某个对象是否与此对象 “相等”

* b:默认情况下比较的是对象的引用是否相同

* c:由于比较对象的引用没有意义,一般建议重写该方法

// 默认方法

public booleanequals(Object obj) {return (this ==obj);

}

bc402dd92ea64616423bccc4d0dbfd1f.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@Overridepublic booleanequals(Object obj) {if (this ==obj)return true;if (obj == null)return false;if (getClass() !=obj.getClass())return false;

Student other=(Student) obj;if (age !=other.age)return false;if (name == null) {if (other.name != null)return false;

}else if (!name.equals(other.name))return false;return true;

}

Student类 内重写 equals方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.heima.object;importcom.heima.bean.Student;public classDemo3_Equals {/** equals 默认比较地址值

* public boolean equals(Object obj) {

return (this == obj);

* }

* object中的equals方法是比较对象的地址值,没有什么意义,我们需要重写

* 因为在开发中我们通常比较的是对象中的属性值,我们认为相同属性是同一个对象*/

public static voidmain(String[] args) {

Student s1= new Student("张三", 18);

Student s2= new Student("张三", 18);boolean b = s1.equals(s2); //重写后比较对象中的属性值

System.out.println(b);

System.out.println(s1==s2);

}

}

equals() 方法

== 号 和 equals()方法 的区别

* 共同点:都可以做比较,都返回boolean值

* 区别:

* == 是一个比较运算符,既可以比较基本数据类型,也可以用于比较引用数据类型

基本数据类型比较的是值,引用数据类型比较的是地址值

* equals() 方法 是一个方法,只能比较引用数据类型,所用的对象都会继承Object类 中的方法

如果没有重写Object类中的方法,equals() 方法和 == 号比较引用数据类型 无区别,重写后的equals() 方法 比较的是对象中的属性值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值