吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1232|回复: 12
收起左侧

[学习记录] 重新学习java第13天-常用类

  [复制链接]
lzmgo 发表于 2022-7-4 19:10
Object

- 祖宗类,所有类的父类
- 一个类一定直接或间接的继承自Object
- Object中存放着所有类都应该拥有的方法,子类可以根据需求选择性的对方法进行重写

常用方法

1. 类对象  getClass():获取引用的实际对象类型
2. int hashCode():获取当前对象的哈希码值
   - 重写原因:该方法默认关注对象地址,但是在某种情境下,我们需要关注的是对象内容,对象内容相同则哈希码值相同,所以需要重写
   - 重写规则:
     1. 属性为String类型,则属性名.hashCode()相加
        - String类已经对该方法提供过重写,其关注的就是内容
     2. 属性为整型,则直接相加
     3. 属性为浮点型,则强转后相加
     4. 属性为对象类型,则该类也需要重写hashCode()方法。其后属性名.hashCode()相加

public class Teacher {
private String name;

public int hashCode(){
    return name.hashCode();
}
//...省略构造、getter、setter

}

public class Student {
private String name;
private int age;
private double score;
private Teacher tea;

@Override
public int hashCode() {
    return name.hashCode() + age + (int) score + tea.hashCode();
}
//...省略构造、getter、setter

}



boolean equals(Object o):判断两个引用是否相等

- 重写原因:该方法默认关注对象地址,但是某种情境下,需要关注对象内容,所以需要重写
- 重写规则:1. 属性为String类型,则属性名.hashCode()相加
                   - String类已经对该方法提供过重写,其关注的就是内容       
        2. 属性为整型,则直接相加
        3. 属性为浮点型,则强转后相加
        4. 属性为对象类型,则该类也需要重写hashCode()方法。其后属性名.hashCode()相加

public class Teacher {
private String name;

public int hashCode(){
    return name.hashCode();
}
//...省略构造、getter、setter

}

public class Student {
private String name;
private int age;
private double score;
private Teacher tea;

@Override
public int hashCode() {
    return name.hashCode() + age + (int) score + tea.hashCode();
}
//...省略构造、getter、setter

}


boolean equals(Object o):判断两个引用是否相等
        - 重写原因:该方法默认关注对象地址,但是某种情境下,需要关注对象内容,所以需要重写
        - 重写规则:

public boolean equals(Object o) {//Object o=new Student()
//自反性
if (this == o) {
return true;//自己跟自己比,一定相同
}
//非空判断
if (o == null) {
return false;//与null值比,一定不同
}
//类型判断
if (this.getClass() != o.getClass()) {
return false;//实际类型不同,一定不同
}
//类型强转
当前类名 引用名 = (当前类名) o;
//属性值比较
if (多个属性值比较直接&&连接){
//String类型的值需要通过equals方法进行值的比较
//语法:变量名1.equals(变量名2)
//原因:String类对equals方法已经提供过方法重写,关注的就是内容
return true;
}

    return false;

}

如果属性为对象类型,想要关注其内容,必须使该类也重写equals方法
String  toString():获取对象的详细信息

        - 重写原因:该方法默认获取地址相关信息,但是日常开发中,对象的属性信息使用频率更高,所以需要重写
        - 重写规则:按照自身需求进行字符串拼接即可
        - 特点:**在直接进行引用输出时会自动调用**

public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
", tea=" + tea +
'}';
}

}

public class Test {
public static void main(String[] args) {
Student s1 = new Student("zhangsan", 20, 98,new Teacher("lisi"));
Student s2 = new Student("zhangsan", 20, 98,new Teacher("wangwu"));

    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s1.toString());
    System.out.println(s2.toString());
}

}


void finalize():用来进行垃圾对象回收

        - 特点:无法手动调用
        - 垃圾回收机制:当虚拟机内存已经满到不足以支撑新对象的创建时,JVM虚拟机会自动调用垃圾对象的finalize()方法对其进行销毁,从而释放空间
        - 垃圾对象:没有任何引用指向的对象(零引用机制)
        - 手动垃圾回收:可以借助垃圾回收器GC,在代码中通过**System.gc()**手动完成垃圾对象回收

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xxxlsy + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

TDwei 发表于 2022-7-11 09:24
一个瓜皮 发表于 2022-7-8 19:35
感觉黑马的和动力节点的都挺不错

欧克欧克 感谢楼主
一个瓜皮 发表于 2022-7-8 19:36
TDwei 发表于 2022-7-5 09:29
老哥在哪里通过什么方式学习呢?我也想要学一学Java,但是找到的完整视频都是以前的,残缺视频要付费才能完 ...

B站找找?黑马的和动力节点的个人感觉讲的还行?
一个瓜皮 发表于 2022-7-8 19:35
TDwei 发表于 2022-7-6 13:46
看哪个的视频呢,我看了好些个,萌新无法判断到底哪个好点,总感觉有些东西漏讲了

感觉黑马的和动力节点的都挺不错
TDwei 发表于 2022-7-6 13:46

看哪个的视频呢,我看了好些个,萌新无法判断到底哪个好点,总感觉有些东西漏讲了
 楼主| lzmgo 发表于 2022-7-5 15:30
szf872591 发表于 2022-7-5 09:59
为啥重学,没坚持到最后?能分享下吗

温故知新嘛,学习细节
 楼主| lzmgo 发表于 2022-7-5 15:29
TDwei 发表于 2022-7-5 09:29
老哥在哪里通过什么方式学习呢?我也想要学一学Java,但是找到的完整视频都是以前的,残缺视频要付费才能完 ...

B站挺不错的
AkiyamaKatsuto 发表于 2022-7-5 15:28
学习中,共勉
szf872591 发表于 2022-7-5 09:59
为啥重学,没坚持到最后?能分享下吗
TDwei 发表于 2022-7-5 09:29
老哥在哪里通过什么方式学习呢?我也想要学一学Java,但是找到的完整视频都是以前的,残缺视频要付费才能完整...
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表