一、String类
原理:核心数组为char value[],用final修饰,不可改变。
public
class
TestString1 {
public
static
void
main(String[] args) {
String s1=
new
String(
"abcdef"
);
String s2=s1.substring(
2
,
4
);//打印:ab199863
System.out.println(Integer.toHexString(s1.hashCode()));//打印:c61, 显然s1、s2不是同一对象
System.out.println(Integer.toHexString(s2.hashCode()));
}
}
字符串常量拼接时的优化
二、StringBuffer和StringBuilder
1、测试可变字符序列常用方法 2、测试可变与不可变字符序列的使用陷阱
public
class
Test {
public
static
void
main(String[] args){/**使用String进行字符串拼接*/
String str8=
""
;
//本质上使用StringBuilder拼接,但每次循环都会生成一个StringBuilder对象
long
num1=Runtime.getRuntime().freeMemory();
//获取系统剩余内存空间
long
time1=System.currentTimeMillis();
//获取系统的当前时间
for
(
int
i=
0
;i<
5000
;i++){
str8=str8+i;
//相当于产生了10000个对象
}
long
num2=Runtime.getRuntime().freeMemory();
long
time2=System.currentTimeMillis();
System.out.println(
"String占用内存:"
+(num1-num2));
System.out.println(
"String占用时间:"
+(time2-time1));
/**使用StringBuilder进行字符串拼接*/
StringBuilder sb1=
new
StringBuilder(
""
);
long
num3=Runtime.getRuntime().freeMemory();
long
time3=System.currentTimeMillis();
for
(
int
i=
0
;i<
5000
;i++){
sb1.append(i);
}
long
num4=Runtime.getRuntime().freeMemory();
long
time4=System.currentTimeMillis();
System.out.println(
"StringBuilder占用内存:"
+(num3-num4));
System.out.println(
"StringBuilder占用时间:"
+(time4-time3));
}
}
三、时间处理相关类
1、Date时间类
2、DateFormat类和SimpleDateFormat类
格式化字符的含义:
例:
3、Calendar 类
4、Math类random类:
5、file类