当前位置: 首页 > news >正文

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

@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic 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);}@Overridepublic 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 equalsLocalDateTime 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和LocalTimeLocalDate localDate = of1.toLocalDate();System.out.println(localDate);LocalTime localTime = of1.toLocalTime();System.out.println(localTime);

LocalDate和LocalTime转换为LocalDateTime

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

4.2LocalDateTime与String相互转换

public class Demo2 {public static void main(String[] args) {//将String转换成LocalDateTimetest1();//将LocalDateTime转换成Stringtest2();}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转换成StringString 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转换成StringLocalDateTime 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)的区别。在迁移过程中,要确保正确的转换和使用方式。

http://www.mrgr.cn/news/39908.html

相关文章:

  • 广西容县霞烟鸡,品牌兴农,助力乡村振兴!
  • uni-app之旅-day02-分类页面
  • Linux日志管理
  • 【论文阅读】MEDICAL GRAPH RAG: TOWARDS SAFE MEDICAL LARGE LANGUAGE MODEL VIA
  • Django 依赖库管理
  • 【必看!!!】10个技巧,3分钟教会你高效寻找开源项目
  • 模型压缩之剪枝
  • 计算机组成原理之进位计数制及其数据之间的相互转换
  • 代码覆盖率
  • https访问报错:net::ERR_CERT_DATE_INVALLD
  • html空单元格的占位
  • 根据蛋白质链序列和原子坐标等生成PDB文件
  • AWS Redshift把老用户权限赋予新用户
  • 防止错误输入!Excel单元格限制输入内容的三种有效方式
  • Arweave的出块原理
  • 高通芯片手机查看空口消息工具:QCAT
  • SpringBoot2(Spring Boot 的Web开发 springMVC 请求处理 参数绑定 常用注解 数据传递 文件上传)
  • OPenWrt编译文件解读makefile
  • spring 实用小技巧
  • 【C++】set详解