2020-02-29(观看视频笔记)

1、StringBuffer:线程安全的可变字符串

  (1)线程安全

      安全 --- 同步 --- 数据是安全的

      不安全 --- 不同步 --- 效率高一些

  (2)StringBuffer 和 String 和区别?

      A:前者长度和内容可变,后者不可变。

      B:如果使用前者做字符串拼接,不会浪费太多资源。 

  (3)StringBuffer的构造方法:

      public StringBuffer():无参构造,其初始容量为16个字符。

      public StringBuffer(int capacity):指定容量的字符串缓冲区对象

      public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

扫描二维码关注公众号,回复: 9483878 查看本文章

  (4)StringBuffer的方法:

      public int capacity():返回当前容量。理论值

      public int length():返回长度(字符数)。实际值

      

  (5)StringBuffer的功能:

      添加功能:

        public StringBuffer append(String str):可以把任意类型添加到字符串缓冲区里面

        public StringBuffer insert(int offser, String str):在指定位置把任意类型的数据插入到字符串缓冲区,并返回字符串缓冲区本身

      删除功能:

        public StringBuffer deleteCharAt(int dext):删除指定位置的字符,并返回本身

        public StringBUffer delete(int start, int end):删除从指定位置开始到指定位置结束的内容,并返回本身

      替换功能:

        public StringBuffer replace(int start, int end, String str):从指定位置开始到指定位置结束的内容,用str字符串替换

      反转功能:

        public StringBuffer reverse()

      截取功能:

        public String substring(int start)

        public String substring(int start, int end)

        注意:返回值类型不再是StringBuffer本身了

  (6)String 和StringBuffer的互相转换?

      String转StringBuffer:

        A:通过构造方法

        B:通过append()

      StringBuffer转String:

        A:通过构造方法

        B:通过toString()方法

  (7)面试题:

      <1>String,StringBuffer,StringBuilder的区别?

          A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。

          B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高。

      <2>StringBuilder和数组的区别?

          A:二者都可以看成是一个容器,装其他的数据。但是呢,StringBuffer的数据最终是一个字符串数据。而数组可以放置多种数据,但必须是同一种数据类型的。

      <3>形式参数问题:

        String作为参数传递

        StringBuffer作为参数传递

          例:public class StringBufferDemo {

              public static void main(String[] args) {

                String s1 = 'hello";

                String s2 = "world";

                System.out.print;n(s1 + "---" + s2);    //hello---world

                change(s1, s2);

                System.out.println(s1 + "---" + s2);    //hello---world

                StringBuffer sb1 = new StringBuffer("hello");

                StringBuffer sb2 = new StringBuffer("world");

                System.out.println(sb1 + "---" sb2);    //hello---world

                change(sb1, sb2);

                System.out.println(sb1 + "---" + sb2);   //hello-worldworld

              }

            

              public static void change(StringBuffer sb1, StringBuffer sb2) {  

                sb1 = sb2;

                sb2.append(sb1);  //当StringBuffer作为参数时,调用方法,会改变原有的数值

              }  

  

              

              public static void change(String s1, String s2) {    //String作为参数传递,相等于基本类型作为参数传递

                s1 = s2;

                s2 = s1 + s2;

              } 

          }

      注意:String作为参数传递,效果和基本类型作为参数传递是一样的。

猜你喜欢

转载自www.cnblogs.com/buhuiflydepig/p/12382293.html
今日推荐