StringBuffer



***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(" ");
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值