这次是第三期Java经典知识点以及面试题了,希望能给广大面试的童鞋提供帮助哈!
1.试比较String,StringBuffer,StringBuilder三者间的区别。
①:String的值不可变,每次对String操作都会生成新的String对象,这样会浪费内存空间,而StringBuffer和StringBuilder的值能多次修改,并且不会产生新的对象;
②:StringBuilder执行速度快,但线程不安全;StringBuffer执行速度慢,但线程安全;
可参照这篇博客查看具体的区别以及细节,这里不作过多的解释,链接为https://blog.csdn.net/u011702479/article/details/82262823。
下面分别对StringBuffer以及StringBuilder分别写一个Demo,代码如下:
public class StringBufferDemo {
public static void main(String[] args) {
//内容可以改变的字符串,相比String节省开销
StringBuffer sb = new StringBuffer();
//初始容量默认16字符
StringBuffer sb1 = new StringBuffer(20);
System.out.println(sb.capacity());//16 初始容量
System.out.println(sb1.capacity());//20
//使用StringBuffer和String显示0-9
for(int i=0;i<10;i++) {
sb1.append(i);
}
System.out.println(sb1);
//反转
System.out.println(sb1.reverse());
String str = new String();
for(int i=0;i<10;i++) {
str += i;
}
System.out.println(str);
String str2 = new String();
for(int i=9;i>=0;i--) {
str2+=str.charAt(i);
}
System.out.println(str2);
//希望显示¥6,577.55(按银行方式显示)
double sal = 6577.55;
StringBuffer sb2 = new StringBuffer("6577.55").insert(0, '¥');
sb2.insert(2, ',');
System.out.println(sb2);
}
}
StringBuilder的Demo代码如下:
public class StringBuilderDemo {
public static void main(String[] args) {
//如果项目与线程相关,请使用StringBuffer
StringBuilder sb = new StringBuilder();
sb.append("今天星期四");
sb.insert(4,"hello");
System.out.println(sb);
}
}
这里