三者执行速度:StringBuilder > StringBuffer > String
每次对 String 类型改变的时,都会生成一个新的 String 对象,指针指向新的 String 对象。
适用于字符串不常变的,少量的数据场景中,例如常量的声明、少量的变量运算...等。
对象可以直接进行修改,不会生成新的对象。
适用于单线程频繁进行字符串运算(如拼接、替换、和删除等),如SQL语句的拼装、JSON封装...等。
每次都对对象本身进行操作,不是生成新的对象。对方法加了同步锁(synchronized)或对调用的方法加了同步锁,线程安全。
适用于多线程频繁进行字符串运算(如拼接、替换、和删除等),如XML解析、HTTP参数解析和封装...等。
用于获取指定时区的当前日期、时间。该类可以取代System类的currentTimeMillis()方法。
//获取当前Clock
Clock clock = Clock.systemUTC();
//获取clock对应的毫秒数
//等于System.currentTimeMillis()
System.out.println(clock.millis());
System.out.println(System.currentTimeMillis());
持续时间
Duration d = Duration.ofSeconds(600);
System.out.println("600秒="+d.toMinutes()+"分");
System.out.println("600秒="+d.toHours()+"时");
System.out.println("600秒="+d.toDays()+"天");
一个具体的时刻,可以精确到纳秒。
1)now():获取当前时刻。
2)now(Clock clock):获取clock对应的时刻。
3)minusXxx():在当前时刻基础上减去一段时间。
4)plusXxx():在当前时刻基础上加上一段时间。
//获取当前时间
Instant instant = Instant.now();
System.out.println(instant);
//instant增加600秒
Instant instant2 = instant.plusSeconds(600);
代表不带时区的日期,如:2019-02-24。
1)now():获取当前日期。
2)now(Clock clock):获取clock对应的日期。
3)minusXxx():在当前年份基础上减去几年、几月、几周或几日等。
4)plusXxx():在当前年份基础上加上几年、几月、几周或几日等。
代表不带时区的时间,如:10:20:09。
1)now():获取当前时间。
2)now(Clock clock):获取clock对应的时间。
3)minusXxx():在当前年份基础上减去几小时、几分、几秒等。
4)plusXxx():在当前年份基础上加上几小时、几分、几秒等。
代表不带时区的日期、时间,如:2019-02-24T10:20:09。
1)now():获取当前日期、时间。
2)now(Clock clock):获取clock对应的日期、时间。
3)minusXxx():在当前年份基础上减去几年、几月、几周或几日、几小时、几分、几秒等。
4)plusXxx():在当前年份基础上加上几年、几月、几周或几日、几小时、几分、几秒等。
仅代表月日,如:--09-20。
1)now():获取当前月日。
2)now(Clock clock):获取clock对应的月日。
仅代表年,如:2019。
1)now():获取当前年份。
2)now(Clock clock):获取clock对应的年份。
3)minusXxx():在当前年份基础上减去几年。
4)plusXxx():在当前年份基础上加上几年。
仅代表年月,如:2019-02。
1)now():获取当前年月。
2)now(Clock clock):获取clock对应的年月。
3)minusXxx():在当前年份基础上减去几年、几月。
4)plusXxx():在当前年份基础上加上几年、几月。
金钱应采用java.math.BigDecimal存储;
BigDecimal入库时,选decimal类型,注意默写成0.00,不要用默认的NULL。
使用BigDecimal(String val) 创建对象,如BigDecimal numA=new BigDecimal("0.6");,
不要用参数为float、double 创建对象,如BigDecimal numA=new BigDecimal(0.6);
用参数为float、double 创建对象会丢失精度。
static SoftReference> cacheList = new SoftReference>(Arrays.asList("AAA","BBB","CCC"));
public static void main(String[] args) {
List myList = cacheList.get();
for (String str : myList) {
System.out.println(str);
}
}