常用类(五种)
一、Object类
1.Object类位于 java.lang包中,是所有类的父类(直接或间接父类)
2.Object类型的引用可以存储任意类型的对象
3.Object中定义的方法是每一个类都默认具有的功能方法。
4.常用方法:
- getClass():返回引用中实际存储的对象类类型。同时,该方法被final修饰不能被覆盖。
实际开发应用:判断两个引用类型中实际存储对象类型是否一致,若一致则为true,否则为false - int hashCode():返回对象的哈希码值,哈希码值的来源是 对象的十六进制的内存地址转换为十进制整数的结果。
注意:不同对象有不同的地址,所以不同对象的哈希码值会不同。 - String toString():返回对象字符串的表现形式。
实际开发应用:通常将自定义中的toString方法进行覆盖,打印输出对象得属性信息。
覆盖的原则:将所有属性拼接成一个String类型的结果进行返回。
public String toString(){
return "name = "+name+",age = "+age;
}
注意:toString方法和 get方法的区别:
①get方法是获取单个属性的信息,并且不更改属性的原数据类型
②toString 方法是获取所有属性的信息,并且是以String类型的结果返回。为了方便程序员打印输出对象信息用的。
- boolean equals(Object o):判断两个对象内容是否相同,相同则为true,否则为true
- ==的应用
①如果 == 两端是基本数据类型的变量,则比较的数值是否相同
②如果 == 两端是引用数据类型的变量,则比较引用中存储的地址是否相同
③实际开发应用:通常用 == 判断两个引用是否指向同一个对象
④用法:引用1 == 引用2 结果为true鄙视指向同一个对象,false指向不同对象 - equals方法的应用
①Object 类中提供的equals 方法默认的是比较两个对象的地址是否相同
②自定义类型的对象利益equals比较对象内容是否相同时,需要手动覆盖,覆盖原则如下:
package com.Baizhi.day14;
public class TestEquals {
public static void main(String[] args) {
Student1 s1 = new Student1("zhangs" , 18);
Student1 s2 = new Student1("zhangs" , 18);
System.out.println(s1.equals(s2));
}
}
class Student1{
private String name;
private int age;
public Student1(){
}
public Student1(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object o){
if(this == o) return true; //1.判断是不是自己指向自己
if(o == null) return false; //2.判断是不是和空对象比较
if(this.getClass() != o.getClass()) return false;//3.判断两个引用类型中所存储的对象类型是否一致
Student1 s = (Student1)o;//4.强制类型转换
//将两个对象的属性内容一一进行比较:基本数据类型 ==;引用类型用equals
if(this.name .equals(s.name) && this.age == s.age){
return true;
}else{
return false;
}
}
}
- void finalize():JVM中的垃圾回收器进行回收垃圾对象时,自动调用的方法。(面试重要,性能调优)
①垃圾对象:没有引用指向的对象。
②垃圾回收器:简称为GC,用于JVM完成回收垃圾对象。
③垃圾回收的目的:销毁处理垃圾对象,从而释放JVM内存。
④垃圾回收器(GC)回收垃圾对象的时机:
第一种情况:自动回收机制
当JVM内存耗尽时,不能再为新创建的对象分配空间时,JVM会启动垃圾回收器,将垃圾随想一次性进行回收(当垃圾回收器回收垃圾对象时,自动调用finalize方法)。
第二种情况:手动回收机制
通过System.gc();通知JVM启动回收器进行垃圾回收,如果GC处于空闲状态,则进行垃圾回收;若GC处于繁忙状态,则暂不回收。
面试题目:
写出final 和finalize 的区别:
final :修饰符、变量、方法
修饰的类:不允许被继承,即没有子类
修饰的方法:不能被覆盖,可以被继承
修饰的变量:作用范围内的常量,只允许赋一次值
finalize:是方法名,垃圾回收器回收垃圾对象,JVM自动调用的方法。