zoukankan      html  css  js  c++  java
  • java学习笔记 --- StringBuffer类

    1、定义:字符串缓冲区,即它是一个容器,容器中可以装很多字符。并且能够对其中的字符进行各种操作。

      StringBuffer的特点:

        1、是一个字符串缓冲区,其实就是一个容器。

        2、长度是可变,任意类型都行。注意:是将任意数据都转成字符串进行存储。

        3、容器对象提供很多对容器中数据的操作功能,比如:添加,删除,查找,修改。

        4、所有的数据最终变成一个字符串。

    2、String的方法

      StringBuffer的构造方法:
        public StringBuffer():无参构造方法
        public StringBuffer(int capacity):指定容量的字符串缓冲区对象
        public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
      
      StringBuffer的方法:
         public int capacity():返回当前容量。 理论值
         public int length():返回长度(字符数)。 实际值

    public class StringBufferDemo {
        public static void main(String[] args) {
            // public StringBuffer():无参构造方法
            StringBuffer sb = new StringBuffer();
            System.out.println("sb:" + sb);
            System.out.println("sb.capacity():" + sb.capacity());
            System.out.println("sb.length():" + sb.length());
            System.out.println("--------------------------");
    
            // public StringBuffer(int capacity):指定容量的字符串缓冲区对象
            StringBuffer sb2 = new StringBuffer(50);
            System.out.println("sb2:" + sb2);
            System.out.println("sb2.capacity():" + sb2.capacity());
            System.out.println("sb2.length():" + sb2.length());
            System.out.println("--------------------------");
    
            // public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
            StringBuffer sb3 = new StringBuffer("hello");
            System.out.println("sb3:" + sb3);
            System.out.println("sb3.capacity():" + sb3.capacity());
            System.out.println("sb3.length():" + sb3.length());
        }
    }
    
    结果:
    sb:
    sb.capacity():16
    sb.length():0
    --------------------------
    sb2:
    sb2.capacity():50
    sb2.length():0
    --------------------------
    sb3:hello
    sb3.capacity():21
    sb3.length():5

        StringBuffer的添加功能:
          public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
      
          public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

    public class StringBufferDemo {
        public static void main(String[] args) {
            // 创建字符串缓冲区对象
            StringBuffer sb = new StringBuffer();
    
            // public StringBuffer append(String str)可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
            // StringBuffer sb2 = sb.append("hello");
            // System.out.println("sb:" + sb);
            // System.out.println("sb2:" + sb2);
            // System.out.println(sb == sb2); // true
    
            // 一步一步的添加数据
            // sb.append("hello");
            // sb.append(true);
            // sb.append(12);
            // sb.append(34.56);
    
            // 链式编程
            sb.append("hello").append(true).append(12).append(34.56);
            System.out.println("sb:" + sb);
    
            // public StringBuffer insert(int offset,String
            // str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
            sb.insert(5, "world");
            System.out.println("sb:" + sb);
        }
    }
    
    结果:
    
    sb:hellotrue1234.56
    sb:helloworldtrue1234.56

      StringBuffer的删除功能
        public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
        public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身  

    public class StringBufferDemo {
        public static void main(String[] args) {
            // 创建对象
            StringBuffer sb = new StringBuffer();
    
            // 添加功能
            sb.append("hello").append("world").append("java");
            System.out.println("sb:" + sb);
    
            // public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
            // 需求:我要删除e这个字符,肿么办?
            // sb.deleteCharAt(1);
            // 需求:我要删除第一个l这个字符,肿么办?
            // sb.deleteCharAt(1);
    
            // public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身
            // 需求:我要删除world这个字符串,肿么办?
            // sb.delete(5, 10);
    
            // 需求:我要删除所有的数据
            sb.delete(0, sb.length());
    
            System.out.println("sb:" + sb);
        }
    }
    结果
    
    sb:helloworldjava
    sb:

      StringBuffer的替换功能:
          public StringBuffer replace(int start,int end,String str):从start开始到end用str替换

    public class StringBufferDemo {
        public static void main(String[] args) {
            // 创建字符串缓冲区对象
            StringBuffer sb = new StringBuffer();
    
            // 添加数据
            sb.append("hello");
            sb.append("world");
            sb.append("java");
            System.out.println("sb:" + sb);
    
            // public StringBuffer replace(int start,int end,String
            // str):从start开始到end用str替换
            // 需求:我要把world这个数据替换为"节日快乐"
            sb.replace(5, 10, "节日快乐");
            System.out.println("sb:" + sb);
        }
    }
    结果:
    sb:helloworldjava
    sb:hello节日快乐java

      StringBuffer的反转功能:
          public StringBuffer reverse()

    public class StringBufferDemo {
        public static void main(String[] args) {
            // 创建字符串缓冲区对象
            StringBuffer sb = new StringBuffer();
    
            // 添加数据
            sb.append("霞青林爱我");
            System.out.println("sb:" + sb);
    
            // public StringBuffer reverse()
            sb.reverse();
            System.out.println("sb:" + sb);
        }
    }
    结果“
    sb:霞青林爱我
    sb:我爱林青霞

      StringBuffer的截取功能:注意返回值类型不再是StringBuffer本身了
          public String substring(int start)
          public String substring(int start,int end)

    public class StringBufferDemo {
        public static void main(String[] args) {
            // 创建字符串缓冲区对象
            StringBuffer sb = new StringBuffer();
    
            // 添加元素
            sb.append("hello").append("world").append("java");
            System.out.println("sb:" + sb);
    
            // 截取功能
            // public String substring(int start)
            String s = sb.substring(5);
            System.out.println("s:" + s);
            System.out.println("sb:" + sb);
    
            // public String substring(int start,int end)
            String ss = sb.substring(5, 10);
            System.out.println("ss:" + ss);
            System.out.println("sb:" + sb);
        }
    }
    结果:
    sb:helloworldjava
    s:worldjava
    sb:helloworldjava
    ss:world
    sb:helloworldjava

    3、面试题
      1:String,StringBuffer,StringBuilder的区别?
        A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。
        B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高
      
         2:StringBuffer和数组的区别?
         二者都可以看出是一个容器,装其他的数据。
        但是呢,StringBuffer的数据最终是一个字符串数据。
        而数组可以放置多种数据,但必须是同一种数据类型的。
      
       3:形式参数问题
        String作为参数传递
        StringBuffer作为参数传递 

      形式参数:
          基本类型:形式参数的改变不影响实际参数
         引用类型:形式参数的改变直接影响实际参数
      注意:
          String作为参数传递,效果和基本类型作为参数传递是一样的。 

    public class StringBufferDemo {
        public static void main(String[] args) {
            String s1 = "hello";
            String s2 = "world";
            System.out.println(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);
        }

     

  • 相关阅读:
    metasploit模块功能介绍
    虚拟机端口映射
    linux 双网卡实现
    斯坦福第三课:线性代数回顾(Linear Algebra Review)
    斯坦福第二课:单变量线性回归(Linear Regression with One Variable)
    斯坦福第一课:引言(Introduction)
    机器学习的个人见解----深夜总结
    史上最强机器学习资料------来自个人心血总结-----5星级
    如何学习新的知识----心血总结
    21个必知数据科学面试题和答案
  • 原文地址:https://www.cnblogs.com/flei/p/6612258.html
Copyright © 2011-2022 走看看