API常用类与函数-日期与时间

目录

1.toString和Equlas(Object)

1.1toString

2.Equals

2.StringBuilder

2.1StringBuilder 的用法

2.2StringBuilder 的作用

2.3注意事项

4.LocalDateTime问题

4.1LocalDateTime的基础用法

4.2LocalDateTime与String相互转换

4.3注意事项


1.toString和Equlas(Object)

1.1toString

toString 方法是 Java 中 Object 类的一个公共方法,用于返回对象的字符串表示形式

方法旨在为对象提供一个易于阅读的字符串表示形式,通常用于调试和日志记录。

2.Equals

equals 方法也是 Object 类中的一个公共方法,用于比较两个对象是否相等。

默认情况下,equals 方法比较的是两个对象的引用是否相同。这意味着默认情况下只有两个对象引用指向同一个对象时,equals 方法才会返回 true


    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

2.StringBuilder

StringBuilder 是 Java 中的一个类,位于 java.lang 包下,用于构建和修改字符串。与 String 类型不同的是,StringBuilder 对象是可变的,这意味着可以在不创建新对象的情况下更改字符串的内容。这对于频繁修改字符串内容的场合非常有用,因为它可以避免创建多个字符串对象,从而提高性能和减少内存消耗。

2.1StringBuilder 的用法

StringBuilder 提供了许多方法来操作字符串,比如插入、删除、替换字符等。下面是一些基本的用法:

  1. 创建 StringBuilder 对象

StringBuilder sb = new StringBuilder("Hello");

追加字符串

sb.append(" World!");
// 结果:sb.toString() 返回 "Hello World!"

插入字符串

sb.insert(5, " ");
// 结果:sb.toString() 返回 "Hello World!"

删除字符

sb.delete(0, 5); // 删除从位置 0 到位置 4 的字符
// 结果:sb.toString() 返回 " World!"

替换字符

sb.replace(1, 5, "ello");
// 结果:sb.toString() 返回 "ello World!"

反转字符串

sb.reverse(); // 反转字符串
// 结果:sb.toString() 返回 "!dlroW olle"

字符串转换

String str = sb.toString();

2.2StringBuilder 的作用

StringBuilder 的主要作用是在需要频繁修改字符串内容的情况下提供高效的操作手段。以下是 StringBuilder 的一些常见应用场景:

  1. 拼接大量字符串 当你需要将多个字符串拼接在一起时,使用 StringBuilder 比直接使用 + 运算符更高效,尤其是在循环中。

  2. 修改字符串内容 如果你需要在字符串中插入、删除或者替换字符,使用 StringBuilder 可以避免每次修改都需要创建一个新的字符串对象。

  3. 性能优化 在需要频繁修改字符串内容的应用中,使用 StringBuilder 可以显著提高程序的性能。

2.3注意事项

虽然 StringBuilder 非常有用,但在多线程环境中使用时需要注意同步问题。如果在一个多线程环境中共享 StringBuilder 对象而不加同步控制的话,可能会导致数据不一致的问题。在这种情况下,可以考虑使用 StringBuffer 类,它是 StringBuilder 的线程安全版本。然而,在单线程环境中,StringBuilder 的性能通常优于 StringBuffer

总之,StringBuilder 是一个非常有用的类,适用于需要频繁修改字符串内容的情况。正确使用它可以显著提升代码的性能和可维护性。

深度搜索

4.LocalDateTime问题

LocalDateTime 是 Java 8 引入的新日期时间 API 中的一个类,位于 java.time 包下。它代表了日期和时间,但不包含时区信息。LocalDateTime 是不可变的,所有的方法都会返回一个新的 LocalDateTime 对象而不是修改现有的对象。

4.1LocalDateTime的基础用法

获取当前时间

 //获取当前时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

获取指定时间

//获取指定时间
        LocalDateTime localDateTime = LocalDateTime.of(2003, 10, 16, 10, 10);
        System.out.println(localDateTime);

调整时间-->plus minus with(设置时间)

  //调整时间-->plus minus with(设置时间)
   LocalDateTime localDateTime1 = now.plusDays(2);
   LocalDateTime localDateTime2 = now.minusDays(2);
   LocalDateTime localDateTime3 = now.withHour(10);

比较时间-->isBefore isAfter equals

  //比较时间-->isBefore isAfter equals
        LocalDateTime of1 = LocalDateTime.of(2003, 10, 16, 10, 10);
        LocalDateTime of2 = LocalDateTime.of(2003, 11, 16, 10, 10);
        System.out.println(of1.isBefore(of2));
        System.out.println(of1.isAfter(of2));
        System.out.println(of1.equals(of2));

LocalDateTime转换为LocalDate和LocalTime

 //LocalDateTime转换为LocalDate和LocalTime
        LocalDate localDate = of1.toLocalDate();
        System.out.println(localDate);
        LocalTime localTime = of1.toLocalTime();
        System.out.println(localTime);

LocalDate和LocalTime转换为LocalDateTime

//LocalDate和LocalTime转换为LocalDateTime
        LocalDateTime localDateTime4 = LocalDateTime.of(localDate, localTime);
        System.out.println(localDateTime4);

4.2LocalDateTime与String相互转换

public class Demo2 {
    public static void main(String[] args) {
         //将String转换成LocalDateTime
         test1();
        //将LocalDateTime转换成String
         test2();

    }

    private static void test2() {
        //获取指定时间
        LocalDateTime of = LocalDateTime.of(2020, 9, 8, 10, 10, 10);
        //定义转换模式
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //将LocalDateTime转换成String
        String str = of.format(dtf);
        System.out.println(str);
    }

    private static void test1() {
        //定义时间字符串
        String str = "2020-09-08 10:10:10";
        //定义转换模式
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
       // 将LocalDateTime转换成String
        LocalDateTime parse = LocalDateTime.parse(str, dtf);
        System.out.println(parse);
    }
}

4.3注意事项

在使用 LocalDateTime 时,需要注意以下几个方面:

  1. 不可变性

    • LocalDateTime 对象是不可变的,所有修改日期时间的操作都会返回一个新的对象。因此,在需要频繁修改日期时间的情况下,需要确保性能上的优化。
  2. 时区问题

    • LocalDateTime 不包含时区信息。如果你需要处理涉及时区的日期时间,应该使用 ZonedDateTime 或 OffsetDateTime
  3. 日期时间范围限制

    • LocalDateTime 支持的日期范围是从公元元年(0001年)到公元9999年,因此在处理超出这个范围的日期时需要注意。
  4. 日期时间计算

    • 在进行日期时间的加减操作时,要注意闰年、月份天数等因素的影响。例如,从2月29日减去一年可能不是2月28日,而是3月1日,因为不是闰年。
  5. 格式化和解析

    • 使用 DateTimeFormatter 来格式化和解析日期时间时,要确保模式字符串与日期时间字符串匹配,否则会抛出异常。
  6. 线程安全性

    • 由于 LocalDateTime 是不可变的,因此它是线程安全的。但是,在创建新的 LocalDateTime 对象时,如果有并发操作,需要确保创建过程中的同步。
  7. 默认时区

    • 当使用 LocalDateTime.now() 方法时,默认使用系统设置的时区。如果需要指定时区,请使用 ZonedDateTime 或 OffsetDateTime
  8. 与旧日期时间 API 的兼容性

    • 在使用 LocalDateTime 时,注意与旧的日期时间 API(如 java.util.Date 和 java.util.Calendar)的区别。在迁移过程中,要确保正确的转换和使用方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值