(13)StringBuffer&数组排序
一.StringBuffer
- StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,底层是一个长度为16的字符数组
当调用添加的方法时,不会再重新创建对象,在不断向原缓冲区添加字符StringBuffer sb = new StringBuffer(); StringBuffer sb2 = sb.append(true); StringBuffer sb3 = sb.append("li"); StringBuffer sb4 = sb.append(100); System.out.println(sb.toString()); //trueli100 System.out.println(sb2.toString()); //trueli100 System.out.println(sb3.toString()); //trueli100 System.out.println(sb4.toString()); //trueli100
-
StringBuffer和String的相互转换
通过构造方法将字符串转换成StringBuffer对象
通过append方法将字符串转换成StringBuffer对象
通过构造将StringBuffer转换成String
通过toString方法将StringBuffer转换成String
通过截取字符串将StringBuffer转换成String -
StringBuffer和StringBuilder
StringBuffer线程安全,效率低
StringBuilder线程不安全,效率高 -
String类虽然是引用数据类型,但是他当作参数传递时和基本数据类型是一样的
-
Integer的面试题
-128到127是byte的取值范围,如果在这个范围内,自动装箱就不会创建新对象, 而是从常量池中获取
如果超过了byte取值范围就会再创建新的对象
Integer i1 = 127;
Integer i2 = 127;
syso(i1 == i2); //true
syso(i1.equals(i2)); //true
Integer i3 = 128;
Integer i4 = 128;
syso(i3 == i4); //false
syso(i3.equals(i4)); //true