JavaSE11

Java常用类

Object

  • 超类、基类,所有类的直接或间接父类,位于继承树的最顶层
  • 任何类如果没有书写extends显示继承某个类,都默认继承Onject类。如果继承了其他类,则为间接继承
  • Object类中所定义的方法,是所有对象都具备的方法
  • Object类型可以存储任何对象
    • 作为参数,可接受任何对象
    • 作为返回值,可返回任何对象
getClass()
  • public final native Class<?> getClass();
  • 返回引用中存储的实际对象类型
  • 通常用于判断两个引用中实际存储对象类型是否一致
        DemoTest demoTest = new DemoTest();
        DemoTest demoTest2 = new DemoTest();
        System.out.println(demoTest.getClass());//class com.phx.fclass.DemoTest
        System.out.println(demoTest2.getClass());//class com.phx.fclass.DemoTest
        System.out.println(demoTest.equals(demoTest2));//判断两个对象是否相同 fase
        System.out.println(demoTest.getClass().equals(demoTest2.getClass()));//判断二者是不是同一个类型 true
hashCode()
  • public native int hashCode();
  • 返回该对象的哈希码值
  • 哈希值根据对象的地址或字符串或数字使用hash算法计算出的int类型的数值
  • 一般情况ha相同对象返回相同哈希码,但哈希码相同的对象不一定是相同对象
DemoTest demoTest = new DemoTest();
        DemoTest demoTest2 = new DemoTest();
        System.out.println(demoTest.hashCode());//356573597
        System.out.println(demoTest2.hashCode());//1735600054
        System.out.println(demoTest.equals(demoTest2));//false
//执向同一对象
        DemoTest demoTest = new DemoTest();
        DemoTest demoTest2 = demoTest;//demoTest2和demoTest指向统一对象
        System.out.println(demoTest.hashCode());//356573597
        System.out.println(demoTest2.hashCode());//356573597
        System.out.println(demoTest.equals(demoTest2));//true
toString()
  • public String toString()
  • 返回该对象的字符串表示(表现形式)
  • 可以根据程序需求覆盖该方法,如展示对象各个属性值
    DemoTest demoTest = new DemoTest();
    System.out.println(demoTest.toString());//直接打印包+类名+哈希值 com.phx.fclass.DemoTest@1540e19d
@Override
    public String toString() {
        return "Student{" + "id=" + id + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}';
    }
equals
  • 判断两对象是否相同
  • public boolean equals(Object obj) {
    return (this == obj); }
    finalize()方法
    • 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列
    • 垃圾对象:没有有效引用指向此对象时,为垃圾对象
    • 垃圾回收:由GC销毁垃圾对象,释放数据存储空间
    • 自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象
    • 手动回收机制:使用System.gc();通知JVM执行垃圾回收
public class Student {
   @Override//重新 finalize()
   protected void finalize() throws Throwable {
       System.out.println(this.name+"被回收了");
   }
   private String name;
   private int age;
   public Student(String name, int age) {
       this.name = name;
       this.age = age;
   }
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   public int getAge() {
       return age;
   }
   public void setAge(int age) {
       this.age = age;
   }
}
//测试
public static void main(String[] args) {
       new Student("zs",18);
       new Student("ls",18);
       new Student("ww",18);
       System.gc();
       }

在这里插入图片描述

包装类

  • 基本数据类型所对应的引用数据类型
  • 基本类型存放在栈中,包装类(对象)存放在堆中
  • Object可以统一所有数据,包装类的默认值是null
    在这里插入图片描述
类型转换,装箱、拆箱
public static void main(String[] args) {
        //基本类型转换:装箱,基本类型转引用类型
        int num=10;
        Integer integer4=num;
        Integer integer=new Integer(num);
        Integer integer2 = Integer.valueOf(num);
        //拆箱:引用类型转基本类型
        Integer integer3=new Integer(100);
        int num2=integer3.intValue();
        //JDK1.5之后,提供自动装箱和拆箱
        int age=30;
        //自动装箱
        Integer integer5=age;
        System.out.println(integer5);
        Integer integer6=new Integer(100);
        //自动拆箱
        int num3=integer6;
        System.out.println(num3);
    }
  • parseXXX()静态方法
  • valueOf()静态方法
  • 注意:需要保证类型兼容,否则抛出NumberFormatException异常
//基本类型和字符串的转换
        //int转String
        int a=15;
        //方式一:+""
        String str=a+"";
        //方式二:Integer.toString()
        String str2=Integer.toString(a);
        String str3=Integer.toString(a,16);//f
        String s = String.valueOf(a);
        System.out.println(str3);
        //字符串转基本类型
        String str4="150";
        //使用Interger
        int num4 = Integer.parseInt(str4);
        //String转Integer
        Integer integer1 = Integer.valueOf(str4);
        //Boolean字符串转基本类型,"true"--->true;非"true"--->false
        String str5="Hello";
        Boolean flag = Boolean.valueOf(str5);
        String str6="true";
        boolean flag2 = Boolean.parseBoolean(str6);
        System.out.println(flag);//false
        System.out.println(flag2);//true

整数缓冲区

  • Java预先创建了256个常用的整数包装类型对象
  • 实际应用中,对已创建的对象进行复用
        Integer integer1=new Integer(100);
        Integer integer2=new Integer(100);
        System.out.println(integer1.equals(integer2));//true 比较值
        System.out.println(integer1==integer2);//false 比较栈中所存的堆中的地址
        //堆空间中默认存储了-128--+127,共256个常用整数的包装类型对象
        Integer integer3=100;//自动装箱 通过Integer.ValueOf()
        Integer integer4=100;
        //100在堆的整数缓冲区,直接获取其地址
        System.out.println(integer3==integer4);//true
        System.out.println(integer3.equals(integer4));//true
        Integer integer5=200;
        Integer integer6=200;//自动装箱 通过Integer.ValueOf()
        //200不在堆的整数缓冲区,每次都要在堆中new一个对象来存放,所以栈中的地址是不同的
        System.out.println(integer5==integer6);//false
        System.out.println(integer5.equals(integer6));//true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值