深入探讨java常用类-------Object、Math、Random与日期时间类(上)

目录

一、Object类

1.1 概述

1.2 toString方法

1.3 equals方法

1.4 clone方法

1.5 finalize方法

二、Math类

2.1 概述

2.2 常用方法

三、Random类

3.1 概述

3.2 常用方法

四、日期时间类

4.1 Date类

4.2 SimpleDateFormat类

4.3 Calendar类

总结


        在Java开发中,理解并掌握核心类库是提高编码效率与代码质量的关键。本文将从实用角度出发,深入探讨Java中的Object类、Math类、Random类以及日期时间相关的类,并结合具体的案例展示这些类的实际应用。

一、Object类

1.1 概述

  java.lang.Object类是Java中的顶级父类,所有类都直接或间接继承自它。即使在没有显式继承其他类的情况下,一个类也默认继承自Object类。Object类提供了一些基本的方法,这些方法在所有Java对象中都可用。

本文重点介绍Object类中的四个核心方法:

  • public String toString():返回对象的字符串表示形式。
  • public boolean equals(Object obj):判断两个对象是否“相等”。
  • protected native Object clone():创建并返回对象的副本。
  • protected void finalize():当对象被垃圾回收时调用。

1.2 toString方法

toString方法通常用于返回对象的字符串表示形式。默认情况下,它返回对象的类型和内存地址,但在实际开发中,我们通常会重写toString方法,以便输出更有意义的信息。

示例代码

public class Person {
    private String name;  // 姓名属性
    private int age;      // 年龄属性

    @Override
    public String toString() {
        // 返回对象的字符串表示形式,包含姓名和年龄信息
        return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}

在实际开发中,可以通过集成开发环境(如IntelliJ IDEA)自动生成toString方法,从而提高开发效率。

1.3 equals方法

equals方法用于判断两个对象是否相等。默认实现比较的是两个对象的内存地址,但在很多场景下,我们需要基于对象的属性来判断其相等性。

示例代码

public class Person {
    private String name;  // 姓名属性
    private int age;      // 年龄属性

    @Override
    public boolean equals(Object o) {
        // 检查是否是同一对象
        if (this == o) return true;
        // 检查对象类型是否相同
        if (!(o instanceof Person)) return false;
        // 类型转换后,比较两个对象的name属性
        Person person = (Person) o;
        return name.equals(person.name);
    }
}

重写equals方法时通常还需重写hashCode方法,以确保在集合操作中的一致性。

1.4 clone方法

clone方法用于创建当前对象的副本。若要使用此方法,需要实现Cloneable接口,并将clone方法的访问权限提升为public

示例代码

public class Person implements Cloneable {
    private String name;  // 姓名属性
    private int age;      // 年龄属性

    @Override
    public Object clone() throws CloneNotSupportedException {
        // 使用父类的clone方法创建对象的副本
        return super.clone();
    }
}

1.5 finalize方法

finalize方法在对象被垃圾回收时调用。通常我们不需要重写此方法,但在需要在对象被销毁前执行一些操作时,可以进行适当重写。

二、Math类

2.1 概述

Math类提供了基本的数学运算方法,如指数、对数、平方根和三角函数等。所有Math类中的方法都是静态的,无需创建对象即可调用。

2.2 常用方法

以下是一些常用的Math方法:

  • static double abs(double a):返回a的绝对值。
  • static double ceil(double a):返回大于等于a的最小整数。
  • static double floor(double a):返回小于等于a的最大整数。
  • static long round(double a):返回最接近along值。
  • static double random():返回[0.0, 1.0)范围内的随机值。

示例代码

public static void main(String[] args) {
    // 输出圆周率
    System.out.println(Math.PI);
    // 计算并输出-3.5的绝对值
    System.out.println(Math.abs(-3.5));
    // 计算并输出-3.5向上取整的结果
    System.out.println(Math.ceil(-3.5));
    // 计算并输出3.5向下取整的结果
    System.out.println(Math.floor(3.5));
    // 计算并输出3.5的四舍五入结果
    System.out.println(Math.round(3.5));
    // 计算并输出-3.5的四舍五入结果
    System.out.println(Math.round(-3.5));
    // 计算3的4次方并输出结果
    System.out.println(Math.pow(3,4));
    // 生成并输出一个0.0到1.0之间的随机数
    System.out.println(Math.random());
}

三、Random类

3.1 概述

Random类用于生成伪随机数流。通过设置随机种子,可以生成一组可重复的随机数。

3.2 常用方法

  • public int nextInt():返回一个伪随机的int值。
  • public int nextInt(int n):返回一个[0, n)范围内的伪随机int值。
  • public double nextDouble():返回一个伪随机的double值。

示例代码

public static void main(String[] args) {
    Random random = new Random(); // 创建Random对象
    // 生成并输出一个随机整数
    System.out.println(random.nextInt());
    // 生成并输出一个0到10之间的随机整数
    System.out.println(random.nextInt(10));
    // 生成并输出一个随机浮点数(0.0到1.0之间)
    System.out.println(random.nextFloat());
    // 生成并输出一个随机双精度浮点数(0.0到1.0之间)
    System.out.println(random.nextDouble());
    // 生成并输出一个随机长整数
    System.out.println(random.nextLong());
    // 生成并输出一个随机布尔值
    System.out.println(random.nextBoolean());
}

四、日期时间类

4.1 Date类

Date类表示特定的瞬间,精确到毫秒。虽然很多方法已经过时,但Date类仍然是Java中处理日期时间的重要类。

示例代码

public static void main(String[] args) {
    // 创建当前日期对象
    Date date = new Date();
    // 输出当前日期和时间
    System.out.println(date);
    // 输出当前日期和时间的时间戳(毫秒)
    System.out.println(date.getTime());

    // 创建一个日期对象,对应时间戳为0的日期(1970年1月1日)
    Date date2 = new Date(0);
    // 输出该日期
    System.out.println(date2);
}

4.2 SimpleDateFormat类

SimpleDateFormat类用于格式化和解析日期。通过自定义格式,可以将Date对象与字符串互相转换。

示例代码

public static void main(String[] args) throws ParseException {
    // 创建一个日期格式化对象,指定日期格式为"yyyy-MM-dd HH:mm:ss"
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    // 获取当前日期并格式化为字符串
    Date date = new Date();
    String dateString = format.format(date);
    // 输出格式化后的日期字符串
    System.out.println(dateString);

    // 将一个字符串解析为日期对象
    String d = "2020-12-28 14:55:05";
    Date dateParsed = format.parse(d);
    // 输出解析后的日期对象
    System.out.println(dateParsed);
}

4.3 Calendar类

Calendar类表示日历,可以方便地获取和设置各种时间属性。它是Date类的增强版。

示例代码

public static void main(String[] args) {
    // 获取当前日期时间的日历实例
    Calendar cal = Calendar.getInstance();
    // 输出当前年份
    System.out.println(cal.get(Calendar.YEAR));
    // 输出当前月份(注意:月份从0开始,0表示1月)
    System.out.println(cal.get(Calendar.MONTH));
    // 输出当前月份中的第几天
    System.out.println(cal.get(Calendar.DAY_OF_MONTH));

    // 设置日期为2012年12月12日
    cal.set(Calendar.YEAR, 2012);
    cal.set(Calendar.MONTH, 11); // 月份从0开始,所以12月是11
    cal.set(Calendar.DAY_OF_MONTH, 12);
    // 输出设置后的日期
    System.out.println(cal.get(Calendar.YEAR) + "年" + (cal.get(Calendar.MONTH) + 1) + "月" + cal.get(Calendar.DAY_OF_MONTH) + "日");
}

总结

        通过对ObjectMathRandom和日期时间类的深入探讨,我们不仅了解了这些类的基本功能,还通过具体的代码示例展示了它们在实际开发中的应用。这些基础类库在Java开发中扮演着重要角色,掌握它们将极大提高你的编程能力与效率。

                  如果你喜欢这篇文章可以给我一个免费的赞和关注,这是我持续创作的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值