Java字符串、时间、数字知识点
文章目录
- 一、兼容性
- 二、字符串处理类
- 1. StringBuffer与StringBuilder
- 2. append(null)的处理
- 三、字符串分割工具
- 1. StringTokenizer
- 2. String.split()
- 四、日期时间处理
- 1. Date类
- 2. 数据库时间存储
- 3. SimpleDateFormat
- 五、数学相关类
- 1. Math类
- 2. BigInteger类
一、兼容性
- 向上兼容:指新的软件版本能够兼容旧版本的功能、数据或接口。例如,高版本Java编译器编译的代码,在低版本Java运行环境中可能仍能正常运行(需注意部分新增特性可能不兼容)。
二、字符串处理类
1. StringBuffer与StringBuilder
特性 | StringBuffer | StringBuilder |
---|---|---|
线程安全 | 线程安全(方法被synchronized 修饰) | 非线程安全(无同步机制) |
性能 | 相对较低(同步开销) | 相对较高(无同步开销) |
append()方法返回值 | 返回当前对象(this ),支持链式调用(如sb.append("a").append("b") ) | 同StringBuffer,支持链式调用 |
2. append(null)的处理
- 当调用
StringBuffer
或StringBuilder
的append(null)
方法时,存储的是字符串实体"null"
,而非null
引用。
三、字符串分割工具
1. StringTokenizer
- 默认分隔符:默认以空格(包括空格、制表符
\t
、换行符\n
等空白字符)作为分隔符。 - 构造函数:不同构造函数可指定自定义分隔符,例如
new StringTokenizer(str, ",;")
表示以,
或;
为分隔符。 - 使用场景:较古老的工具类,功能有限,目前已较少使用,推荐使用
String.split()
方法。
2. String.split()
- 基于正则表达式进行字符串分割,灵活性更高。例如
"a,b,c".split(",")
返回["a", "b", "c"]
。 - 注意:特殊正则字符(如
.、*、+
等)需转义(使用\\
)。
四、日期时间处理
1. Date类
- 表示特定的时间点,底层存储为自1970年1月1日00:00:00 GMT以来的毫秒数。
- 注意:
java.util.Date
类部分方法(如getYear()
)已过时,推荐使用java.time
包下的新类(如LocalDateTime
)。
2. 数据库时间存储
- 数据库中时间通常以字符串形式存储(如
"2023-10-01 12:00:00"
),或使用数据库原生时间类型(如MySQL的DATETIME
、TIMESTAMP
)。
3. SimpleDateFormat
- 用于日期与字符串的转换,其中
y(年)、M(月)、d(日)、H(24小时制时)、m(分)、s(秒)
是特殊占位符,必须严格区分大小写(例如M
代表月,m
代表分)。 - 示例:
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
可格式化时间为"2023-10-01 14:30:00"
。
五、数学相关类
1. Math类
- 包含一系列数学运算静态方法(如
abs()
、sqrt()
、random()
等)。 - 部分方法被
native
修饰(如Math.random()
),表示其实现依赖底层C语言代码,通过JNI(Java Native Interface)调用。
2. BigInteger类
- 用于处理任意精度的整数,可直接通过字符串初始化(如
new BigInteger("12345678901234567890")
),解决了long
等基本类型精度有限的问题。