**小白的Java学习之旅**------API高级开发

常用类(五种)

一、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自动调用的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值