Java 常用类 01 Object 超类

1.1 Object 超类


Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现了这个类的方法。

  1. clone() 创建并返回此对象的一个副本
  2. equals() 指示其他某个对象是否与对此对象 “相等”
  3. getClass() 返回该对象的 运行时类 与反射有关
  4. hashCode() 返回该对象的 哈希值 可以理解为对象的地址(大概是把 内存地址的十六进制 转换为了 十进制
  5. finalize()
  6. notify() 唤醒在此对象监视器上 等待的单个线程。
  7. notifyAll() 唤醒在此对象监视器上等待的所有 线程。
  8. toString() 返回该对象的 字符串表达形式
  9. wait() 在其他线程调用此对象 的 notify 或 notifyAll 方法前,导致 当前线程等待。
  10. wait(long) 在其他线程调用此对象 的 notify 或 notifyAll 方法前,或者是 超过指定的 时间量前,导致当前线程等待。时间一过,就不需要等待了。
  11. wait(long,int) 在其他线程调用此对象 的 notify 或 notifyAll 方法前,或者是 超过指定的 时间量前,导致当前线程等待。时间一过,就不需要等待了。或者是 被其他线程终止掉了。就不需要等待了。

1.getClass() 方法

public final Class<?> getClass(){} 

返回引用中 存储的实际对象类型。

应用:通常用于判断两个引用中实际存储对象类型是否一致。

2.hashCode() 方法

public int hashCode(){}

返回的是 哈希值。

哈希值根据对象的地址或字符串或数字使用 hash算法计算出来的 int 类型的数值。但据说 这个 hashCode 好像就是 十六转十。

一般情况下,相同对象 会返回 相同的哈希值。

3.toString() 方法

public String toString(){}

返回该对象的字符串表达形式。

可以根据程序需求覆盖该方法,如:展示对象各个属性值。可以重写

4.equals() 方法

public boolean equals(Object obj){}

默认实现为(this == obj) 比较两个对象 地址 是否相同在这里插入图片描述

可进行重写,比较两个对象的内容是否相同。

那么为什么 String.equals() 比较的是 字符串的内容呢。而不是 地址呢?

答:因为 在 String 的这个 类里,重写了 equals 方法。在这里插入图片描述
5.finalize() 方法 现已不让用

  • 当对象 被判定为 垃圾对象时,由JVM自动调用 此方法,用 以 标记垃圾对象,进入回收队列。
  • 垃圾对象:没有有效引用 指向此对象时,为垃圾对象。
  • 垃圾回收:由GC销毁垃圾对象,释放数据存储空间。
  • 自动回收机制:JVM 的内存耗尽,一次性回收所有垃圾对象。
  • 手动回收机制:使用System.gc(); 通知 JVM 执行垃圾回收。

1.2 包装类

  • 基本数据类型所 对应的引用数据类型(就属于 包装类)。

基本类型 转 引用类型:俗称装箱。(栈 拿到 堆)

引用类型 转 基本类型:俗称拆箱。(堆 拿到 栈)

  1. Integer 整型类
//以构造方法 来 装箱 只能装 int 类型的
Integer integer1 = new Integer(num1);
//以 valueOf() 方法 来装箱,可以装String 和 int 
Integer integer2 = Integer.valueOf("123");
//隐式 自动装箱
Integer integer3 = 123;

隐式的自动装箱 无法 把 字符串直接自动装箱,只允许 int 基本类型,这是因为 自动装拆箱 原理是 构造和析构函数的自动调用,或者是 valueOf 方法的自动调用。在这里插入图片描述
反汇编后 发现 自动调用了 valueOf() 方法。
在这里插入图片描述

在这里插入图片描述

//以 intValue() 取值 方法 来进行拆箱
Integer integer1 = new Integer(num1);
//隐式转换 自动拆箱 !!现在比较提倡这种!!
int num1 = integer1;

我们可以很容易的 利用 Integer 来把字符串数字 转 整型数字

 		Integer integer2 = Integer.valueOf("123");

        System.out.println(integer2);
        
        int num2 = integer2.intValue();

        System.out.println(num2);

1.3 类型转换与装箱、拆箱

  • 八种包装类提供不同类型间的转换方式:

  • Number 父类 中 提供的 六个 共性方法。

  • parse XXX() 静态方法。

  1. 整型 转 字符串
int n1 = 100;
//+ 号 方式 转 字符串
String s1 = n1+"";
//使用 Integer 的 toString() 方法。
String s2 = Integer.toString(n1);
//还可以 根据 进制来转换
String s3 = Integer.toString(n1,16);//以 16 进制处理数字 转换为字符串
  1. 字符串 转 整型
String str = "150";
//使用 Integer.parseXXX();
Integer.parseInt(str);//以 解析的 形式 转成 int 类型
  1. 字符串 转 Boolean
String str2 = "true";
boolean b1 = Boolean.parseBoolean(str2);//以解析的格式转 booolean 

只要 字符串 不是 true 就得会 被转成 falsae

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值