ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2.3常用类-String Buffer类

2021-10-10 16:01:57  阅读:186  来源: 互联网

标签:sb1 String Buffer StringBuffer System sb 2.3 new


String Buffer


基本:
  1. 可变的字符序列,可以对字符串内容进行增删

  2. 很多方法与String 相同,但String Buffer是可变长度的

  3. String Buffer 是一个容器

  4. 类图结构:


String 与 String Buffer 对比:
  1. String 保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率低 // private final char value[];
  2. StringBuffer 保存的是字符串变量,里面的值可以更改。每次StringBuffer的更新,实际上可以更新内容,不用更新地址,效率高 // char[] value 放在这个 堆内

StringBuffer 构造器的使用 与 源码解析
  1. //创建了一个大小为 16 的char[]数组用于存放字符内容
    StringBuffer stringBuffer = new StringBuffer();
    
    • 在StringBuffer.java 下 看到super();

    • 向上追查其父类 查看super();的源码

  2. // 通过构造器指定 char[] 的大小
    StringBuffer stringBuffer = new StringBuffer(100);
    
  3. // 通过给一个 String 创建StringBuffer char[] 长度为字符长度加16
    StringBuffer stringBuffer = new StringBuffer("hello");
    

String 和 StringBuffer 相互转换
  • String -> StringBuffer

    1. 方式一 使用构造器

      String str = "hello";
      StringBuffer  sb = new StringBuffer(str);
      // sb才是StringBuffer对象  对str 无影响
      
    2. 方式二 使用 append() 方法

      String str = "hello";
      StringBuffer  sb1 = new StringBuffer();
      sb1 = sb1.append(str);
      
  • StringBuffer -> String

    1. 方式一 使用StringBuffer 提供的 toString() 方法

      StringBuffer  sb2 = new StringBuffer("我是StringBuffer");
      String s = sb2.toString();
      
    2. 方式二 使用构造器

      StringBuffer  sb2 = new StringBuffer("我是StringBuffer");
      String s2 = new String(sb2);
      

String Buffer 常用方法
//append()
        StringBuffer sb = new StringBuffer("sad");
        sb.append(",");
        sb.append(100);
        sb.append(false);
        System.out.println(sb);

        // sad,100false
        System.out.println("--------------------------------------------------");

// delete()   [ )     replace()  [ )
        StringBuffer sb1 = new StringBuffer("I am very sad!");
        sb1.delete(2,4);// 删除am
        System.out.println(sb1);// I  very sad!

        sb1.replace(8,11,"happy");
        System.out.println(sb1);// I  very happy!

        sb1.insert(2,"am");
        System.out.println(sb1); // I am very happy!

// indexof()
        int sb2 = sb1.indexOf("v");
        System.out.println(sb2); // 5

// length()
        int length = sb1.length();
        System.out.println(length); // 16

测试题

String str = null;
StringBuffer sb = new StringBuffer();
sb.append(str);
System.out.println(sb.length());// 4
  • 查看源码

Stirng str = null;
StringBuffer sb1 = new StringBuffer(str);
System.out.println(sb1); // 报错
  • 源码

  • 相当于 此时 是 super(null.length()+16 )

标签:sb1,String,Buffer,StringBuffer,System,sb,2.3,new
来源: https://blog.csdn.net/weixin_43230656/article/details/120687558

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有