JAVA常用类

Object类

Java中所有类都直接或者间接地继承Object类 ---- 没有写extends则默认直接继承Object类,否则间接继承

Object类中所定义的方法,是所有对象都具备的方法

Object类型可以存储任何对象 ------ 组为参数,可接受任何对象;作为返回值,可以返回任何对象

getClass()

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

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

public class GetClass {
    public static void main(String[] args) {

        //创建学生类对象
        Student s1 = new Student("张三", 12);

        //用getClass获取对象的类
        Class s1Class = s1.getClass();
        System.out.println(s1Class);
    }
}

//创建一个学生类
//属性:姓名年龄;构造方法;get/set
class Student{
    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;
    }
}

输出:

class com.huang.ObjectClass.Student

hashCode()

返回该对象的哈希码值(int型)

哈希值是根据对象的地址或者字符串或者数字根据hash算法计算出来的int型数值

一般情况下相同对象返回相同的哈希码

System.out.println(s1.hashCode());

输出:

460141958

toString()

返回该对象的字符串表示

可以根据程序需求进行重写

//创建一个学生类
//属性:姓名年龄;构造方法;get/set
//重写toString方法
class Student{
    ……省略
	……
    ……
    @Override
    public String toString() {
        return "Student{" +
                "name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ‘}‘;
    }
}
public static void main(String[] args) {

    //创建学生类对象
    Student s1 = new Student("张三", 12);
    
    //用toString方法
    System.out.println(s1.toString());

}

输出:

Student{name=‘张三‘, age=12}

如果不重写,toString方法输出 com.huang.ObjectClass.Student@1b6d3586

equals()

用于比较两个对象的地址是否相同

可以根据程序需求对其进行重写

equals方法覆盖:

1、判断obj是否为null

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

2、强制类型转换

3、依次计较各个属性的值是否相同

//创建一个学生类
//属性:姓名年龄;构造方法;get/set
// toString()
//equals()
class Student{
    
    ……省略
    ……省略
    ……省略
        
    @Override
    public boolean equals(Object o) {
        // 1、判断obj是否为null
        if(o == null){
            return false;
        }
        // 2、判断两个对象是否是同一个引用
        if(this == o){
            return true; //如果是同一个对象直接返回true
        }
        // 3、判断是否是同一个类型
        //if(this.getClass() == o.getClass()){}
        //使用instanceof比较简洁
        if (o instanceof Student){
            // 如果是,4、强制类型转换
            Student s = (Student) o; //Object o 是Object类型的,所以做强转

            // 5、依次比较属性值是否相同
            if(this.name.equals(s.getName()) && this.age == s.getAge()){
                return true;
            }
        }
        return false;
    }
}
public static void main(String[] args) {
	
    //创建学生类对象
    Student s1 = new Student("张三", 12);
    Student s2 = new Student("李四", 30);
    Student s3 = new Student("李四", 30);

    //equals
    System.out.println(s1.equals(s2));
    System.out.println(s2.equals(s3));
}

输出:

false
true

finalize()

当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记对象,进入回收队列

垃圾对象:没有有效引用指向此对象时为垃圾对象

垃圾回收:由GC销毁垃圾对象,释放数据存储空间

自动回收机制:JVM的内存耗尽,一次性回收所有的垃圾对象

手动回收机制:使用System.gc(),通知JVM执行垃圾回收

//创建一个学生类
//属性:姓名年龄;构造方法;get/set
//finalize()
class Student{
   	……省略
    ……省略
    ……省略
    @Override
    protected void finalize() throws Throwable {
        System.out.println(this.name + "对象被回收了");
    }
}
public static void main(String[] args) {

    //创建学生类对象
    Student s1 = new Student("张三", 12);
    Student s2 = new Student("李四", 30);
    Student s3 = new Student("李四", 30);
    new Student("王五",3);

    //手动回收垃圾
    System.gc();

}

输出:

王五对象被回收了

BigDecimal

精确计算浮点数

public static void main(String[] args) {
    double a = 1.0;
    double b = 0.9;
    System.out.println(a-b); // 输出结果为0.09999999999999998

    //精确计算
    BigDecimal bd1 = new BigDecimal("1.0"); //用字符串
    BigDecimal bd2 = new BigDecimal("0.9");
    //减
    BigDecimal subtract = bd1.subtract(bd2);
    System.out.println(subtract); // 输出结果为0.1

    //除
    BigDecimal divide = bd1.subtract(new BigDecimal("0.1")).divide(bd2);
    System.out.println(divide); // 输出结果为1

    BigDecimal divide1 = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP); //保留两位小数,四舍五入模式
    System.out.println(divide1); // 输出结果为1.11
}

Date 和 Calendar

1 s = 1000 ms

1 ms = 1000 us

1us = 1000 ns

Date类中大部分方法已经被Calendar类中的方法取代

Date date = new Date();
System.out.println(date.toString()); // Thu Aug 19 17:26:33 CST 2021

Calendar类提供了获取或者设置各种日历字段的方法,其构造方法的修饰符是protected,所以无法直接创建该对象

//创建对象,构造函数为protected修改,不能直接创建对象
Calendar instance = Calendar.getInstance();
System.out.println(instance.getTime()); //打印时间

//获取时间信息
System.out.println(instance.get(Calendar.YEAR)); //年
System.out.println(instance.get(Calendar.MONTH) + 1); //月 ,从 0 - 11,实际要 +1

//修改时间
Calendar instance1 = Calendar.getInstance();
instance1.set(Calendar.MONTH,3);
System.out.println(instance1.getTime().toLocaleString());

SimpleDateFormat

日期 -----> 文本

文本 -----> 日期


年 -----> y

年终月份 -----> M

月中天数 -----> d

一天中小时数(0 --- 23) -----> H

分钟 -----> m

秒 -----> s

毫秒 -----> S

//创建对象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//创建时间
Date date = new Date();
//格式化时间
String format = simpleDateFormat.format(date);
System.out.println(format); //2021-08-19 17:57:39

//解析 ---- 字符串转成日期
Date parse = simpleDateFormat.parse("2000-10-01 20:10:31");
System.out.println(parse); //Sun Oct 01 20:10:31 CST 2000

System

JAVA常用类

JAVA常用类

上一篇:错误 CS8107 C# 7.0 中不支持功能“xxxxxx”。请使用 7.1 或更高的语言版本。


下一篇:Java BigDecimal