常用类第27天(equals90方法,finalize()方法,包装类,装箱和拆箱,基本类型转字符串类型)

equals()方法

public boolean equals(Object obj){}
  • 默认实现为(this==obj),比较两个地址是否相同
  • 可进行覆盖(也就是重写),比较两个对象的内容是否相同,重写步骤如下:
  1. 比较两个引用是否指向同一个对象
  2. 判断obj是否为null
  3. 判断两个引用指向的实际对象类型是否一致
  4. 强制类型转换
  5. 依次比较各个属性值是否相同
    重写代码如下(可用Alt+Insert快捷键)
@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

例:

Student s1 = new Student("张三", 23);
        Student s2 = new Student("张三", 23);
        Student s3=s1;
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));

重写前结果:
image
重写后结果:
image

finalize()方法

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

包装类

基本数据类型所对应的引用数据类型
Object可统一所有数据,包装类的默认值是null

基本数据类型 包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

装箱与拆箱

装箱:基本类型转换成引用类型
拆箱:引用类型转换成基本类型

        //类型转换:装箱(将基本类型转成引用类型的过程)
        int num1=18;
        //使用Integer类创建对象
        Integer integer1=new Integer(num1);
        Integer integer2=Integer.valueOf(num1);
        //类型转换:拆箱(将引用类型转成基本类型的过程)
        Integer integer3=new Integer(100);
        int num2= integer3.intValue();

浮点型数据也可以如此操作

float a1=3;
        Float b1=new Float(a1);
        Float b2=Float.valueOf(a1);
        
        float a2=b1.floatValue();

jdk1.5版本之后可实现自动装箱及拆箱

	//jdk1.5之后,提供自动装箱和拆箱,不需要手动做装封箱的操作
        int num3=10;
        Integer integer4=num3;
        num3=integer4;

基本类型和字符串转换

基本类型转换为字符串类型

int num1=10;
//1,使用"+"
String s1=num1+"";
//2,使用toString(10代表转换为几进制)
String s2= Integer.toString(num1,10);

字符串类型转换为基本类型,使用parseXXX(XXX为需要装换成为的数据类型)

String s3="150";
int s3=Integer.parseInt(s3);

注意:字符串转为boolean类型时,"true"将会转成true,任何非"true"都会转换成false

String str1="true";
       String str2="false";
       String str3="rfger";
       String str4="";
       boolean bo1=Boolean.parseBoolean(str1);
       boolean bo2=Boolean.parseBoolean(str2);
       boolean bo3=Boolean.parseBoolean(str3);
       boolean bo4=Boolean.parseBoolean(str4);
        System.out.println(bo1);
        System.out.println(bo2);
        System.out.println(bo3);
        System.out.println(bo4);

image

posted @   不再犹豫27  阅读(22)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示