第7章java的常用类

第7章java的常用类

官网API文档

Object类

  • 它是所有类的超类、基类,是所有类的直接或间接父类,位于继承树的最顶层
  • 任何类,都不需要写extends Object,因为都是默认继承
  • 该类的所有定义的方法,是所有对象都具备的方法
  • Object类型可以存储任何对象
    • 作为参数,可以接收任何对象
    • 作为返回值,可返回任何对象

1.getClass()方法

  • public final Class<?> getClass(){}
  • 返回引用中存储的实际对象类型。
  • 应用:通常用于判断两个引用中实际存储对象类型是否一致

接下来我来对该方法进行一系列测试:

测试1:Person类型实例化一它的派生类Studnet,所返回的是什么类型

在这里插入图片描述

测试2:不同类型相同实例化

在这里插入图片描述

3.hashCode()方法

  • public int hashCode(){}
  • 返回该对象的哈希码值。该值起到引用变量名查找堆里面的代码块的作用
  • 哈希码根据对象的地址、字符串、数字使用hash算法计算出来的一个int数值
  • 一把情况下相同对象返回相同哈希码,

在这里插入图片描述

4.toString()方法

  • public String toString(){}
  • 返回改对象的包+类名+@+十六进制哈希码

在这里插入图片描述

  • 我们常常重写该方法,返回改对象的各个属性值。

5.equals()方法

  • public boolean equals(Object obj){}
  • 用来判断两个对象的引用地址是否相同

在这里插入图片描述

6.finalize()方法

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

7.包装类型(装箱和拆箱)

在这里插入图片描述

缓存池:它也叫常量池,它是事先存储一些常用的数据、用以提高性能、 节省空间的一种技术。大部分的包装类型都实现了缓存池,当我们在自动封装的时候,如果基本类型的值处在缓存的范围内则不会重新创建对象,而是使用缓存池中已事先创建好的对象

  • 已经缓存的有:

    boolean 缓存了 true 和false
    Byte 、Short、Integer 、Long 缓存了 -128到127
    Character缓存了unicode编码 \u0000 到 \u007F

    • 值得注意的是:Integer的缓存值可以通过AutoBoxCacheMax进项调整闪现
  • 我们在回顾一下java基本类型的取值范围:

    整数类型:byte,1字节,8位,最大存储数据量是255,存放的数据范围 是-128~127之间。

    整数类型:short,2字节,16位,最大数据存储量是65536,数据范围是-32768~32767之间。

    整数类型:int,4字节,32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

    整数类型:long,8字节,64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

    浮点类型:float,4字节,32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

    浮点类型:double,8字节,64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

    字符型:char,2字节,16位,存储Unicode码,用单引号赋值。

    布尔型:boolean,只有true和false两个取值

在这里插入图片描述

在这里插入图片描述

当变量a和b为10时,缓存池里面有-127~128的Integer值,所有这两个值进行比较返回true.

当变量a和b为128时,缓存池里面有-127~128的Integer值,所有这两个值进行比较返回false.

我们查看源码也看出:

在这里插入图片描述

看了源码后我们发现如果没有满足缓存池的条件 他将自动给我实例化一个对象,所以我们想要获取缓存池的值时千万不要直接使用new

注意:因为缓存池的原因,所以当两个包装类型进行比较的时候要用equals()方法进行比较,而不要使用==进行比较**

利用代码进行装箱和拆箱;

public class Test {
   
    public static void main(String[] args) {
   
        Integer a=8;//等价于  Integer a=Integer.valueOf(8);
        int b=a;  //等价于   int b=a.intValue()
    }
}

String类

1.String字符串池

  • 字符串是常量,创建之后不可以改变。
  • 字符串字面值存储在字符串池中,可以共享
  • 创建一个字符串有两种方式:
    • String s=“hello”; //产生一个对象,字符串池中存储
    • String s=new String(“hello”); //产生两个对象,堆、字符串池各一个然后s引用了堆里面的代码块,然后在指向字符串池里面的hello
public class Test {
   
    public static void main(String[] args) {
   
        String str1="hello";
    }
}

在这里插入图片描述

public class Test {
   
    public static voi
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值