***StringBuffer:字符串缓冲区。
作为一个字符容器
特点:
1,长度可以变化
2,可以对内容通过指定方法进行修改
3,容器对象一般都会具备对容器中的元素进行操作的功能,增删改查
4,缓冲区可以存储不同类型的数据
5,最终缓冲区存储完的数据都会变成字符串。
str= new StringBuffer.append("a").append(4);
缓冲区可以对数据进行临时存储。
了解缓冲区的常见方法。
添加元素:
StringBuffer .append(各种类型的数据);追加
StringBuffer .insert(index,各种类型的数据):指定位置添加
//插入一个boolean值true
sb.insert(1,true);
// 删除字符
sb.delete(1,4);
// 修改字符
sb.replace(1,5,"false")
sb.setLength(2);
sb.reverse();//反转字符
println方法会将所有要打印的数据先转成字符串再输出,对于对象会自动调用toString方法
***什么时候用字符缓冲区?
数据很多,个数无所谓确定,类型无所谓确定,只要最后都转成字符串。
就使用StringBuffer这个容器,使用的局限性:
1,必须最终转成字符串。
2,无法对存储进来的元素进行单独操作,因为存储进来的元素都变成字符串
JDK1.5以后,出现了StringBuilder和StringBuffer用法一样
StringBuffer是线程同步的,// 加锁,synchronized append();
StringBuilder是线程不同步的。
一般可以建议选择StringBuilder 因为速度快
基本类型对象包装类: 将基本数据据类型对象包装类
对象中定义更多的功能方法操作该数据
常用的操作之一:用于基本数据类型与字符串之间的转换。
字符串转换成基本数据类型:
使用的是 parse基本类型(字符串);parseInt parseByte parseDouble..
基本类型转成字符串 Interger.toString(3)+5 35
整数转对象: 1, Integer i= new Integer(4); 2, Integer i2=new Integer("4"); // 构造方法
3,Integer i3= Integer.valueOf(4);//静态方法
对象转整型:Integer x1=new Integer(5); int n1=x1.intValue();
JDK1.5以后,新的技术,自动装箱自动拆箱,像int 一样的操作Integer
Integer i=4;//自动装箱,Integer.valueOf(4);
i=i+6;// 右边的i自动拆箱。i.intValue()+6 运算完的结果又一次装箱赋给i
***jdk1.5以后,自动装箱的值如果在byte范围之内,相同的值不会单独开辟空间,而是重复使用
练习:"23 10 -8 0 3 7 108"对字符串中的数值进行升序排序后,生成一个数值有序的字符串
思路:
1,排序,而且对整数数值排序
2,排序的元素都在字符串中,如何取出?
3, 找String类的功能,而且我发现,数字之间间隔都是相同的空格,有规律
如果有这个功能,结果是多个字符串,String[] split(String);
4,将获取的数字格式的字符串转成数字存储到数组中
5, 将数组排序
6,将数组转成字符串
public static void main(String[] args) {
// TODO Auto-generated method stub
String numStr="23 10 -8 0 3 7 108";
String sortStr=sortNumberString(numStr);
System.out.println(sortStr);
}
private static String sortNumberString(String numStr) {
// TODO Auto-generated method stub
String[] numStrs=toStringArray(numStr);
int[] nums=toIntArray(numStrs);
sort(nums);
return toString(nums);
}
private static String toString(int[] nums) {
// TODO Auto-generated method stub
StringBuilder sb=new StringBuilder();
for(int i=0;i<nums.length;i++){
if(i!=nums.length-1){
sb.append(nums[i]+" ");
}else{
sb.append(nums[i]);
}
}
return sb.toString();
}
private static void sort(int[] nums) {
Arrays.sort(nums);
}
private static int[] toIntArray(String[] numStrs) {
// TODO Auto-generated method stub
int[] nums=new int[numStrs.length];
for(int i=0;i<numStrs.length;i++){
nums[i]=Integer.parseInt(numStrs[i]);
}
return nums;
}
private static String[] toStringArray(String numStr) {
// TODO Auto-generated method stub
return numStr.split(" ");
}