由于字符串不可变,当我们描述大量字符串的时候,需要占用大量的常量池空间。而很多时候我们描述某个字符串一次之后就再也不用描述了。
为了解决这种问题,我们可以申请一些空间,用完可以回收,也可以继续进行复用。
在Java里,可变字符串类用的是StringBuffer和StringBuilder。前者线程不安全,后者线程安全。
StringBuilder
构造函数可以指定容量,默认为16。也可以指定一个字符串,这样默认容量是16+字符串容量。
StringBuilder提供的API返回的是自己的引用,这样可以支持链式调用。
StringBuilder的扩容算法是 原始容量*2 + 2
System
一般就用currentTimeMillis()方法。通常在一段代码的开始和结束各获取一次,然后相减来计算代码执行的时间。
Date
Date date = new Date(); Date date = new Date(1000); //距离1970.1.1.00:00:00的时间 date.getTime();
SimpleDateFormat
格式化工具
主要就是format方法和parse方法,一个是从date到string(时间),一个是从string到date。
格式大概是
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar
不能实例化,是个全球化的日历系统。足以应对大部分国家的情况。
重点是全球化。
什么是全球化的日历系统呢?比如日本的明治XXX什么的。
Calendar instance = Calendar.getInstance(); instance.set(2008,8-1,8,8,8,8); Date date = instance.getTime();
Java8的日期类
之前的类设计的太差了,于是造了新的。
一些常用的类
LocalDate LocalTime LocalDateTime
LocalDateTime常用API
Instant 时区是本初子午线那个时区
DateTimeFormatter 就是Java8的格式化类。API保持不变。