由于字符串不可变,当我们描述大量字符串的时候,需要占用大量的常量池空间。而很多时候我们描述某个字符串一次之后就再也不用描述了。
为了解决这种问题,我们可以申请一些空间,用完可以回收,也可以继续进行复用。

在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保持不变。