Java常用类(1)

Java常用类

Object概述

  • 超类,基类,所有类的直接和间接父类,位于继承树的最高层
  • 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承
  • Object类中所定义的方法,是所有对象都具备的方法
  • Object类型可以储存任何对象
    • 作为参数,可接受任何对象
    • 作为返回值,可返回任何对象

1.getClass()

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

s1和s2属于同一个类型

Process finished with exit code 0

2.hashCode()

  • public int hashCode(){}
  • 返回该对象的哈希码值
  • 哈希值根据对象的地址字符串数字使用hash算法计算出来的int类型的数值
  • 一般情况下相同对象返回哈希码

3.toString()

  • public String toString(){}
  • 返回该对象的字符串形式(表现类型)
  • 可以根据程序需求覆盖(重写)该方法 如:展示对象各个属性
重写 : 需要有继承关系,子类重写父类的方法!
    1.方法名必须相同
    2.参数列表必须相同
    3.修饰符:范围可以扩大       private ->protected ->default-> public
    4.抛出的异常: 范围可以被缩小,但不能扩大   ClassNotFoundException<--Exception(大)
重写,子类的方法和父类必须一致,方法体不同

为什么需要重写?
    1.父类的功能,子类不一定需要,或者不一定满足
    Alt+Insert:override

P.S. 这里没有继承是因为toString类是在Object类里面的,每个类都是直接继承的

4.equals ()

比较两个对象是否相等 相等true 不相等false

  • public boolean equals(Object obj){}
  • 默认实现为(this==obj),比较两个对象地址是否相同
  • 可进行覆盖,比较两个对象的内容是否相同

equals()方法覆盖重写步骤

  1. 比较两个引用是否指向同一个对象

  2. 判断obj是否为null

  3. 判断两个引用指向的实际对象类型是否一致

  4. 强制类型转换

  5. 依次比较各个属性值是否相同

5.finalize()

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

成功回收:

至于回收方法的详解,在下现在也不会

6.包装类概述

Java 设计当初就提供了 8 种 基本数据类型及对应的 8 种包装数据类型。基本数据类型的数据,使用起来非常的方便,但是没有对应的方法来操作这些数据。所以我们可以使用一个类,把基本类型的数据包装起来,这个类叫包装类。在包装类中可以定义一些方法,用来操作基本类型的数据。所以包装类型正是为了解决基本数据类型无法面向对象编程所提供的。

  • 基本数据类型所对应的引用数据类型

    (基本数据类型都存放在栈里面,引用数据类型则储存在堆里面 栈里面存的是对象的地址(引用), 8个基本类型没有属性和方法 基本数据类型变成引用数据类型之后,就可以有属性和方法了)

  • Object可统一所有数据,包装类的默认值是null

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

类Byte Byte类将基本类型byte的值包装在一个对象中(即从栈到了堆中,而栈里面存的是引用),一个Byte类型的对象只包含一个类型为byte的字段

更详细请看API

7.类型转换和装箱与拆箱

这是基本类型和包装类之间的转换

装箱:基本类型转换成引用类型(对象) 栈到堆 即装箱

Long(long value);
Integer(int value);
Integer(String a);
  
静态:
    static Integer valueOf(int i);
	static Integer valueOf(String a);

拆箱:引用类型转换基本类型 堆到栈 即拆箱

int i = in.intValue();

运行:

    //类型转换 装箱,基本类型转成引用类型的过程
    //基本类型
        //JDK1.5之前
        int num1 = 18;
        //使用Integer类创建对象
        Integer integer1 = new Integer(num1);
        Integer integer2 = Integer.valueOf(num1);
        System.out.println("装箱");
        System.out.println(integer1);
        System.out.println(integer2);

        //类型装换  拆箱,引用类型转成基本类型
        Integer integer3 = new Integer(100);
        int num2 = integer3.intValue();
        System.out.println("拆箱");
        System.out.println(num2);

        //JDK1.5之后提供了自动装箱和拆箱
        int age=30;

        //自动装箱
        Integer integer4 = age;
        System.out.println("自动装箱");
        System.out.println(integer4);
        //自动拆箱
        int age2 = integer4;
        System.out.println("自动拆箱");
        System.out.println(age2);

结果装箱
18
18
拆箱
100
自动装箱
30
自动拆箱
30

8.基本类型和字符串转换

  • 8中包装类提供不同类型间的转换方式:
    • Number父类中提供6个共性方法
    • parseXXX(); 静态方法 字符串和基本类型的转换
    • valueOf(); 静态方法
  • 注意:需保证类型兼容,否则抛出NumberFormatException异常
public static void main(String[] args){
    //基本类型和字符串之间的转换
        //1.基本类型转换成字符串
        int n1 = 100;
        int n11 = 11;
        //1.1使用+号
        String s1 = n1+"";
        //1.2使用Integer中的toString()方法
        String s2 = Integer.toString(n1);
        System.out.println(s1);
        System.out.println(s2);
        //toString重载方法 toString(int i,int radix):String - Integer
        //String s22 = Integer.toString(i,radix);
        String s22 = Integer.toString(n11,16);//16进制返回
        System.out.println(n11);
        System.out.println(s22);

        //2.字符串转成基本类型
        String str = "150";//不能有其他符号
        //2.1使用Integer.parseXXX();
        int n2 = Integer.parseInt(str);
        System.out.println(n2);
        //boolean 字符串形式转成 基本类型 只有true-->true   非true-->false
        String str2 = "true";
        String str3 = "tre";
        boolean b1 = Boolean.parseBoolean(str2);
        boolean b2 = Boolean.parseBoolean(str3);
        System.out.println(b1);
        System.out.println(b2);
}
100
100
11
b
150
true
false

===========================================================================

posted @ 2021-03-06 15:16  弹琴的猫  阅读(128)  评论(0)    收藏  举报