自动装箱和拆箱
- 自动装箱-boxing
- 基本类型就自动地封装到与它相同类型的包装中,如:
- Integer i = 100; • 本质上是,编译器编译时为我们添加了:
- Integer i = Integer.valueOf(100);
- 自动拆箱autounboxing
- 包装类对象自动转换成基本类型数据。如:
- int a = new Integer(100);
- 本质上,编译器编译时为我们添加了:
- int a = new Integer(100).intValue();
String StringBuffer StringBuilder
- String:不可变字符序列
- 底层是final char value[]数组,最底层的是字节数组
- StringBuilder:可变字符序列、效率高、线程不安全
- 继承AbstractStringBuilder
- 底层char value[]
- StringBuffer:可变字符序列、效率低、线程安全
- 继承AbstractStringBuilder
常用的方法
append/delete/deleteCharAt/insert/inverse
三者的效率
String<StringBuffer<StringBuilder
/**
* StringBuilder拼接,线程不安全,速度最快(10000条记录大概0毫秒)
*/
public static void getStringBuilderTime(){
long start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for(int i = 0;i < 10000;i++){
sb.append(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
/**
* StringBuffer拼接,线程安全,速度略快(10000条记录大概2毫秒)
*/
public static void getStringBufferTime(){
long start = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for(int i = 0;i < 10000;i++){
sb.append(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
/**
* String拼接,线程安全,速度最慢(10000条记录大概530毫秒)
*/
public static void getStringTime(){
long start = System.currentTimeMillis();
String sb = new String();
for(int i = 0;i < 10000;i++){
sb += i;
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
Date类 DateFormat类SimpleDateFormat类Calendar日历类
DateFormat抽象类的实现类SimpleDateFormat
//把时间对象转化为字符串
DateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);2019年05月22日 12:50:30
Calendar calendar = new GregorianCalendar();