01-Object、常用API

01-Object类、常用API

Object类

概述

在Java中,Object类是所有类的根类,它位于Java类继承体系的最顶层。所有的Java类都直接或间接地继承了Object类,因此Object类中包含了一些在Java编程中非常常用的方法。

常用方法

以下是一些Object类中常用的方法:

equals(Object obj)


public boolean equals(Object obj)

该方法用于比较两个对象是否相等。默认情况下,equals方法比较的是两个对象的引用是否相等,即是否指向同一内存地址。如果需要自定义比较对象的内容是否相等,可以在自定义的类中覆盖该方法。

1. Object类

概述

在Java中,Object类是所有类的根类,它位于Java类继承体系的最顶层。所有的Java类都直接或间接地继承了Object类,因此Object类中包含了一些在Java编程中非常常用的方法。

常用方法

以下是一些Object类中常用的方法:

equals(Object obj)

public boolean equals(Object obj)

该方法用于比较两个对象是否相等。默认情况下,equals方法比较的是两个对象的引用是否相等,即是否指向同一内存地址。如果需要自定义比较对象的内容是否相等,可以在自定义的类中覆盖该方法。

hashCode()

public int hashCode()

该方法返回对象的哈希码值,它是一个整数值。哈希码值是根据对象的内部状态计算得出的,一般情况下,如果两个对象的equals方法返回true,那么它们的哈希码值应该相等。在使用集合类(如HashSet、HashMap等)时,常常需要重写hashCode方法,以保证对象在集合中的唯一性。

toString()

public String toString()

该方法返回对象的字符串表示形式。默认情况下,toString方法返回的是对象的类名和内存地址的十六进制表示。可以通过在自定义的类中覆盖toString方法,返回对象的自定义字符串表示形式,方便调试和输出信息。

getClass()

public final Class<?> getClass()

该方法返回对象的运行时类(Runtime Class)对象,即对象所属的类的Class对象。通过getClass方法,可以获取到对象的类名、包名、父类等信息。可以用于在运行时动态获取对象的类型信息。

clone()

protected Object clone() throws CloneNotSupportedException

该方法用于创建并返回对象的一个副本。默认情况下,该方法是浅复制(Shallow Copy),即复制了对象的引用,而不是对象的内容。如果需要实现深复制(Deep Copy),需要在自定义的类中覆盖clone方法。

举例代码说明

以下是一个使用Object类的举例代码:


public class Person {
    private String name;
    private int age;

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // equals方法覆盖
    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person other = (Person) obj;
        return this.name.equals(other.name) && this.age == other.age;
    }

    // hashCode方法覆盖
    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + name.hashCode();
        result = 31 * result + age;
		return result;
	}
    // toString方法覆盖
    @Override
    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }

    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Bob", 30);

        // 使用equals方法比较两个对象是否相等
        boolean isEqual = person1.equals(person2);
        System.out.println("person1.equals(person2): " + isEqual);

        // 使用hashCode方法获取对象的哈希码值
        int hashCode = person1.hashCode();
        System.out.println("person1.hashCode(): " + hashCode);

        // 使用toString方法获取对象的字符串表示形式
        String toString = person1.toString();
        System.out.println("person1.toString(): " + toString);

        // 使用getClass方法获取对象的运行时类对象
        Class<?> cls = person1.getClass();
        System.out.println("person1.getClass(): " + cls.getName());

        // 使用clone方法创建对象的副本
        try {
            Person clone = (Person) person1.clone();
            System.out.println("person1.clone(): " + clone.toString());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
}
    

总结

Object类是Java中所有类的父类,提供了一些常用的方法用于对象的比较、哈希码值的获取、字符串表示形式的定制以及对象的复制等操作。在Java中,所有的对象都继承了Object类,并可以直接或间接地调用其方法。

在学习Object类时,我们需要掌握以下几点:

  1. equals方法: 用于比较两个对象是否相等,默认情况下比较的是对象的引用地址,但可以通过覆盖该方法来自定义比较逻辑。
  2. hashCode方法: 用于获取对象的哈希码值,通常与equals方法一起使用,保证在比较对象时的一致性。
  3. toString方法: 用于获取对象的字符串表示形式,可以通过覆盖该方法来定制对象的字符串输出格式。
  4. getClass方法: 用于获取对象的运行时类对象,可以用来获取对象的类名、包名等信息。
  5. clone方法: 用于创建对象的副本,可以通过覆盖该方法来实现对象的深复制或浅复制。

通过对Object类的学习和掌握,我们可以更好地理解Java中对象的比较和管理,从而提高程序的效率和可维护性。

2. 日期时间类

Java中提供了丰富的日期时间类用于处理日期和时间的操作。其中包括了三个主要的日期时间类:Date类、DateFormat类和Calendar类。这些类提供了丰富的方法和功能,用于处理日期的表示、格式化、计算和操作,方便了Java程序员在处理日期和时间时的开发工作。

Date类

Date类是Java中最基本的日期时间类,用于表示一个日期和时间的对象。它提供了一系列的方法用于处理日期和时间,如获取年、月、日、时、分、秒等,并支持日期和时间的比较、格式化和解析等操作。

常用方法

Date类提供了一些常用的方法,包括:

  • Date(): 无参构造方法,创建一个表示当前日期和时间的Date对象。
  • Date(long date): 带参构造方法,根据指定的毫秒数从1970年1月1日00:00:00开始计算日期和时间,创建一个Date对象。
  • getTime(): 获取Date对象表示的日期和时间的毫秒数。
  • before(Date when)after(Date when): 比较当前Date对象和指定Date对象的先后顺序。
  • equals(Object obj): 判断当前Date对象和指定对象是否相等。
  • toString(): 将Date对象转换为字符串表示形式。

举例代码说明


import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        // 创建一个表示当前日期和时间的Date对象
        Date now = new Date();

        // 获取日期和时间的毫秒数
        long timeInMillis = now.getTime();
        System.out.println("当前时间的毫秒数:" + timeInMillis);

        // 比较日期先后顺序
        Date futureDate = new Date(timeInMillis + 1000000); // 创建一个未来的Date对象
        System.out.println("当前日期是否在未来日期之前:" + now.before(futureDate));
        System.out.println("当前日期是否在未来日期之后:" + now.after(futureDate));

        // 判断两个Date对象是否相等
        Date sameDate = new Date(timeInMillis); // 创建一个与now对象表示同一日期和时间的Date对象
        System.out.println("两个Date对象是否相等:" + now.equals(sameDate));

        // 将Date对象转换为字符串
        System.out.println("Date对象的字符串表示:" + now.toString());
    }
}

DateFormat类

DateFormat类是Java中用于格式化和解析日期和时间的类。它提供了一系列的方法,用于将Date对象转换为字符串表示形式的日期和时间,或者将字符串表示形式的日期和时间解析为Date对象。

常用方法

DateFormat类提供了一些常用的方法,包括:

  • format(Date date): 将指定的Date对象格式化为字符串表示形式的日期和时间。

  • parse(String source): 将指定的字符串表示形式的日期和时间解析为Date对象。

  • getDateInstance(), getTimeInstance(), getDateTimeInstance(): 获取DateFormat对象的实例,用于格式化不同类型的日期和时间。

  • setLenient(boolean lenient): 设置解析时是否宽松模式,即是否允许解析不符合格式的日期和时间。

  • setTimeZone(TimeZone zone): 设置时区。

举例代码说明


import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        // 创建一个DateFormat对象
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 格式化日期和时间
        Date now = new Date();
        String formattedDateTime = dateFormat.format(now);
        System.out.println("当前日期和时间:" + formattedDateTime);

        // 解析字符串为Date对象
        String dateString = "2023-04-14 10:30:45";
        try {
            Date parsedDate = dateFormat.parse(dateString);
            System.out.println("解析后的Date对象:" + parsedDate);
        } catch (ParseException e) {
            System.out.println("解析日期和时间失败:" + e.getMessage());
        }
    }
}

日期和时间。

  • parse(String source): 将指定的字符串表示形式的日期和时间解析为Date对象。
  • getDateInstance(), getTimeInstance(), getDateTimeInstance(): 获取DateFormat对象的实例,用于格式化不同类型的日期和时间。
  • setLenient(boolean lenient): 设置解析时是否宽松模式,即是否允许解析不符合格式的日期和时间。
  • setTimeZone(TimeZone zone): 设置时区。

举例代码说明

java
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        // 创建一个DateFormat对象
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 格式化日期和时间
        Date now = new Date();
        String formattedDateTime = dateFormat.format(now);
        System.out.println("当前日期和时间:" + formattedDateTime);

        // 解析字符串为Date对象
        String dateString = "2023-04-14 10:30:45";
        try {
            Date parsedDate = dateFormat.parse(dateString);
            System.out.println("解析后的Date对象:" + parsedDate);
        } catch (ParseException e) {
            System.out.println("解析日期和时间失败:" + e.getMessage());
        }
    }
}

Calendar类

Calendar类是Java中用于处理日期和时间的抽象类,提供了一系列的方法和字段,用于进行日期和时间的计算、格式化和操作。Calendar类可以获取当前的日期和时间,并支持对年、月、日、时、分、秒等字段进行操作。

常用方法

Calendar类提供了一些常用的方法,包括:

  • getInstance(): 获取Calendar对象的实例。
  • get(int field): 获取指定字段的值,如年、月、日等。
  • set(int field, int value): 设置指定字段的值。
  • add(int field, int amount): 对指定字段的值进行增加或减少。
  • getTime(): 获取Calendar对象表示的日期和时间的Date对象。
  • setLenient(boolean lenient): 设置解析时是否宽松模式,即是否允许解析不符合格式的日期和时间。

举例代码说明


import java.util.Calendar;
import java.util.Date;

public class CalendarExample {
    public static void main(String[] args) {
        // 获取Calendar对象的实例
        Calendar calendar = Calendar.getInstance();

        // 获取当前的年、月、日、时、分、秒等字段的值
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始,需加1
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        System.out.println("当前日期和时间:");
        System.out.println("年:" + year);
        System.out.println("月:" + month);
        System.out.println("日:" + day);
        System.out.println("时:" + hour);
        System.out.println("分:" + minute);
        System.out.println("秒:" + second);
          // 设置指定字段的值
        calendar.set(Calendar.YEAR, 2022);
        calendar.set(Calendar.MONTH, Calendar.MARCH); // 月份从0开始,这里设置为3月
        calendar.set(Calendar.DAY_OF_MONTH, 25);
        calendar.set(Calendar.HOUR_OF_DAY, 14);
        calendar.set(Calendar.MINUTE, 30);
        calendar.set(Calendar.SECOND, 0);

        // 获取修改后的日期和时间
        Date modifiedDateTime = calendar.getTime();
        System.out.println("修改后的日期和时间:" + modifiedDateTime);

        // 对指定字段的值进行增加或减少
        calendar.add(Calendar.MONTH, 1); // 在当前日期的基础上增加一个月
        Date incrementedDateTime = calendar.getTime();
        System.out.println("增加一个月后的日期和时间:" + incrementedDateTime);
    }
}

3. System类

System类是Java标准库中的一个工具类,提供了一些系统级的方法,用于访问系统相关的信息和执行系统级的操作。其中,System类包含了currentTimeMillis方法和arraycopy方法,用于获取当前时间和数组的拷贝操作。

currentTimeMillis方法

currentTimeMillis方法用于获取当前时间的毫秒数,从1970年1月1日午夜开始计算,以UTC时区为准。该方法返回一个long类型的数值,可以用于计算时间间隔、记录时间戳等操作。

常用方法:

  • System.currentTimeMillis():获取当前时间的毫秒数。

举例代码说明:

long currentTimeMillis = System.currentTimeMillis();
System.out.println("当前时间的毫秒数:" + currentTimeMillis);

arraycopy方法

arraycopy方法用于在数组之间进行复制操作,可以将一个数组的内容复制到另一个数组中。该方法提供了灵活的参数设置,可以指定源数组、源数组的起始位置、目标数组、目标数组的起始位置和复制的长度。

常用方法:

  • System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将源数组的内容复制到目标数组中。

举例代码说明:

// 源数组
int[] srcArray = {1, 2, 3, 4, 5};
// 目标数组
int[] destArray = new int[5];

// 使用arraycopy方法复制数组
System.arraycopy(srcArray, 0, destArray, 0, srcArray.length);

// 输出目标数组的内容
System.out.println("目标数组的内容:" + Arrays.toString(destArray));

以上是关于System类中currentTimeMillis方法和arraycopy方法的概述、常用方法和举例代码说明。在实际编程中,System类的这些方法可以帮助我们获取当前时间和进行数组的复制操作,提供了方便和高效的功能。

4. StringBuilder类

StringBuilder类是Java中的一个字符串操作类,用于处理可变的字符序列。与String类不同,StringBuilder类的字符串内容是可变的,可以进行添加、删除、修改等操作,适用于频繁修改字符串内容的场景。

概述

StringBuilder类位于java.lang包中,是一个可变的字符序列,它允许在字符串的末尾进行添加、插入和删除字符,从而实现字符串的动态修改。StringBuilder类的实例在内存中是可变的,因此在频繁修改字符串时,使用StringBuilder类比直接使用String类更加高效。

常用方法

StringBuilder类提供了丰富的方法,用于对字符串进行修改和操作。以下是一些常用的方法:

  • StringBuilder():构造一个空的StringBuilder对象。
  • StringBuilder(String str):构造一个包含指定字符串的StringBuilder对象。
  • append(String str):将指定字符串追加到当前StringBuilder对象的末尾。
  • insert(int index, String str):将指定字符串插入到当前StringBuilder对象的指定位置。
  • delete(int start, int end):删除当前StringBuilder对象中从指定起始位置到结束位置的字符。
  • replace(int start, int end, String str):将当前StringBuilder对象中从指定起始位置到结束位置的字符替换为指定字符串。
  • toString():将StringBuilder对象转换为一个普通的String对象。

举例代码说明

以下是使用StringBuilder类进行字符串拼接的示例代码:


StringBuilder sb = new StringBuilder();

// 追加字符串
sb.append("Hello");

// 插入字符串
sb.insert(5, " ");

// 删除字符
sb.delete(6, sb.length());

// 替换字符
sb.replace(0, 5, "Hi");

// 输出最终结果
System.out.println(sb.toString());

上述代码中,首先创建了一个空的StringBuilder对象sb,然后通过append方法追加了字符串"Hello",再使用insert方法在第5个位置插入了一个空格字符,接着使用delete方法删除了从第6个位置到字符串末尾的字符,最后使用replace方法将字符串的前5个字符替换为"Hi"。最终,通过toString方法将StringBuilder对象转换为普通的String对象,并输出最终结果。

以上是关于StringBuilder类的概述、常用方法和举例代码说明。在实际编程中,StringBuilder类可以用于高效地进行字符串的拼接、插入、删除和替换等操作,是处理可变字符串的常用工具类。

5. 包装类

在Java中,基本数据类型(如intcharboolean等)没有相应的方法和属性,为了方便处理基本数据类型,Java提供了对应的包装类(如IntegerCharacterBoolean等),用于将基本数据类型包装成对象,从而可以在对象中调用方法和使用属性。

概述

包装类是一种用于将基本数据类型转换为对象的特殊类,位于java.lang包中。Java提供了八种包装类,分别对应八种基本数据类型,包括:BooleanCharacterByteShortIntegerLongFloatDouble。包装类可以用于进行基本数据类型和对象类型之间的转换,提供了许多实用的方法,用于对基本数据类型进行操作。

常用方法

包装类提供了丰富的方法,用于对基本数据类型进行操作。以下是一些常用的方法:

  • valueOf(String s):将字符串转换为对应的包装类对象。
  • parseXXX(String s):将字符串解析为对应的基本数据类型值。
  • xxxValue():将包装类对象转换为对应的基本数据类型值。
  • compareTo(T another):比较两个包装类对象的大小。
  • equals(Object obj):比较两个包装类对象是否相等。
  • toString():将包装类对象转换为字符串。

举例代码说明

以下是使用包装类进行基本数据类型和对象类型之间的转换的示例代码:


// 将字符串转换为包装类对象
Integer i1 = Integer.valueOf("123");
Double d1 = Double.valueOf("3.14");

// 将包装类对象转换为基本数据类型值
int i2 = i1.intValue();
double d2 = d1.doubleValue();

// 比较包装类对象的大小
int result = i1.compareTo(456);

// 比较包装类对象是否相等
boolean isEqual = i1.equals(123);

// 将包装类对象转换为字符串
String s1 = i1.toString();
String s2 = d1.toString();

上述代码中,首先通过valueOf方法将字符串转换为对应的包装类对象,然后通过xxxValue方法将包装类对象转换为基本数据类型值,接着使用compareTo方法比较包装类对象的大小,使用equals方法比较包装类对象是否相等,最后使用toString方法将包装类对象转换为字符串。

以上是关于包装类的概述、常用方法和举例代码说明。在实际编程中,包装类常用于基本数据类型和对象类型之间的转换,以及在需要使用对象的场景中对基本数据类型进行操作。

posted @   RookieMaster  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示