Java学习笔记:JDK8日期时间API与String特性
86 浏览量
更新于2024-09-01
收藏 129KB PDF 举报
"30天搞定Java–day21:涵盖了Java常用类,包括JDK 8之前和新日期时间API,以及String类的不可变性、比较器接口、System类、Math类、BigInteger与BigDecimal的相关知识。"
在Java编程语言中,`String`类是一个非常重要的部分,它代表不可变的字符序列。在`day21`的学习中,我们深入探讨了`String`类的一些关键特性。例如,当创建`String`对象时,如`s1="hello"`和`s2="hello"`,它们都会指向常量池中的同一实例,因为"hello"是一个字面量。然而,使用`new String("hello")`会创建一个新的对象在堆中,这在内存中产生了两个对象。
`String`类的不可变性意味着一旦创建,它的值就不能改变。例如,当我们执行`s1+="world"`,实际上会创建一个新的`String`对象,包含"hello world",而原始的`s1`并没有改变。由于这个特性,`String`类被声明为`final`,不能被继承。
在处理大量字符串操作时,`StringBuffer`和`StringBuilder`提供了更高效的选择。它们都是可变的,允许在原有基础上进行修改,而不是每次都创建新对象。其中,`StringBuffer`是线程安全的,适合多线程环境,而`StringBuilder`没有同步机制,因此在单线程环境中性能更好。
在JDK 8之前,日期和时间的处理主要依赖于`SimpleDateFormat`和`Calendar`类。这两个类虽然功能强大,但使用起来较为复杂。JDK 8引入了全新的日期时间API,包括`LocalTime`、`LocalDateTime`、`LocalDate`等,这些类提供了更加简洁和直观的接口,使得日期时间的处理变得更加容易。
`Comparable`接口用于实现对象的自然排序,比如`String`类已经实现了这个接口,可以根据字典顺序比较字符串。`Comparator`接口则允许自定义比较逻辑,可以用于任何类型的对象,提供了更大的灵活性。
`System`类提供了一些系统级别的功能,如获取当前时间`System.currentTimeMillis()`,或者清理输出流`System.out.flush()`。`Math`类则包含各种数学函数,如平方根`Math.sqrt()`和随机数`Math.random()`。
对于大整数运算,`BigInteger`和`BigDecimal`是Java中两个重要的类,它们分别用于表示任意精度的整数和浮点数,避免了因溢出或精度损失问题导致的计算错误。
复习`day20`的内容,我们可能学习了`String`、`StringBuffer`和`StringBuilder`之间的转换方法,以及如何在它们之间进行操作以提高效率。
`day21`的学习涵盖了Java开发中常用的类和接口,为后续更深入的Java编程打下了坚实的基础。通过理解和熟练运用这些知识点,开发者能够更高效地编写和优化Java代码。
2020-12-21 上传
2020-12-21 上传
2021-01-20 上传
2021-01-20 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-10-31 上传
weixin_38711643
- 粉丝: 1
- 资源: 902
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库