5.19 Java学习

属性没有多态性,如果子类和父类属性重名,那么声明的哪个类型的用的时候就用哪个类型的

Object类的概述

1. Object类的说明
> 明确:java.lang.Object
> 任何一个Java类(除Object类)都直接或间接的继承于Object类
> Object类称为java类的根父类
> Object类中声明的结构(属性、方法等)就具有通用性。
    > Object类中没有声明属性
    > Object类提供了一个空参的构造器
    > 重点关注:Object类中声明的方法

2. 常用方法
   重点方法:equals() \ toString()
   了解方法:clone() \ finalize()
   目前不需要关注:getClass() \ hashCode() \ notify() \ notifyAll() \ wait() \ wait(xx) \ wait(xx,yy)

面试题:final 、 finally 、 finalize 的区别

3. equals()的使用

3.1 适用性:
任何引用数据类型都可以使用。

3.2 java.lang.Object类中equals()的定义:
public boolean equals(Object obj) {
    return (this == obj);
}

3.3 子类使用说明:
> 自定义的类在没有重写Object中equals()方法的情况下,调用的就是Object类中声明的equals(),比较两个
  对象的引用地址是否相同。(或比较两个对象是否指向了堆空间中的同一个对象实体)

> 对于像String、File、Date和包装类等,它们都重写了Object类中的equals()方法,用于比较两个对象的
  实体内容是否相等。

3.4 开发中使用说明:
> 实际开发中,针对于自定义的类,常常会判断两个对象是否equals(),而此时主要是判断两个对象的属性值是否相等。
所以:我们要重写Object类的equals()方法。
> 如何重写:
    > 手动自己实现
    > 调用IDEA自动实现(推荐)

3.5 高频面试题: 区分 == 和 equals()

==:运算符
①使用范围:基本数据类型、引用数据类型
② 基本数据类型:判断数据值是否相等

int i1 = 10;
int i2 = 10;
sout(i1 == i2);//true

char c1 = 'A';
int i3 = 65;
sout(c1 == i3);//true

float f1 = 12.0F;
int i4 = 12;
sout(f1 == i4);//true

引用数据类型变量:比较两个引用变量的地址值是否相等。(或比较两个引用是否指向同一个对象实体)

equals():方法
> 使用范围:只能使用在引用数据类型上。
> 具体使用:对于类来说,重写equals()和不重写equals()的区别。

在所判断的equals中,如果有类类型的成员,那么在这个类中也要重写equals方法

4. toString()的使用

4.1 Object类中toString()的定义:
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

4.2 开发中的使用场景
> 平时我们在调用System.out.println()打印对象引用变量时,其实就调用了对象的toString()

4.3 子类使用说明:
> 自定义的类,在没有重写Object类的toString()的情况下,默认返回的是当前对象的地址值。
> 像String、File、Date或包装类等Object的子类,它们都重写了Object类的toString(),在调用toString()时,
  返回当前对象的实体内容。

4.4 开发中使用说明:

> 习惯上,开发中对于自定义的类在调用toString()时,也希望显示其对象的实体内容,而非地址值。这时候,就需要重写Object
类中的toString().

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值