zoukankan      html  css  js  c++  java
  • 1-20StringBuffer简介

    StringBuffer是一个字符串缓冲区,如果需要频繁的对字符串进行拼接时,建议使用StringBuffer。
    工作原理
    StringBuffer的底层是char数组,如果没有明确设定,则系统会默认创建一个长度为16的char类型数组,在使用时如果数组容量不够了,则会通过数组的拷贝对数组进行扩容,所以在使用StringBuffer时最好预测并手动初始化长度,这样能够减少数组的拷贝,从而提高效率。

    String与StringBuffer的区别?
    String是不可变字符序列,存储在字符串常量池中
    StringBuffer的底层是char数组,系统会对该数组进行扩容

    package com.monkey1024.string;
    
    public class StringBufferTest01 {
    
        public static void main(String[] args) {
            //构造方法
            StringBuffer sb1 = new StringBuffer();
            //StringBuffer的初始容量
            System.out.println(sb1.capacity());
    
            //手动指定StringBuffer的长度
            StringBuffer sb2 = new StringBuffer(100);
            System.out.println(sb2.capacity());
    
            StringBuffer sb3 = new StringBuffer("monkey");
            System.out.println(sb3.capacity());//字符串的length + 16
    
    
        }
    
    }
    

    如何使用StringBuffer进行字符串拼接?

    package com.monkey1024.string;
    
    public class StringBufferTest02 {
    
        public static void main(String[] args) {
            StringBuffer sb = new StringBuffer(30);
            //调用append方法进行字符串拼接
            sb.append("www");
            sb.append(".");
            sb.append("monkey1024");
            sb.append(".");
            sb.append("com");
            System.out.println(sb);//自动调用其toString方法
            //System.out.println(sb.toString());
            sb.insert(4, "1024");//在指定位置插入字符串
            System.out.println(sb);
            sb.delete(4, 8);//删除指定位置的字符串
            System.out.println(sb);
        }
    
    }
    

    String作为参数传递的问题

    基本数据类型的值传递,不改变其值
    引用数据类型的值传递,改变其值

    String类虽然是引用数据类型,但是他当作参数传递时和基本数据类型是一样的

    package com.monkey1024.string;
    
    public class StringBufferTest03 {
    
        public static void main(String[] args) {
            String s = "String";
            System.out.println(s);
            change(s);
            System.out.println(s);//值没有改变
    
            System.out.println("---------------------");
            StringBuffer sb = new StringBuffer();
            sb.append("StringBuffer");
            System.out.println(sb);
            change(sb);
            System.out.println(sb);
        }
    
        public static void change(StringBuffer sb) {
            sb.append("java");
        }
    
        public static void change(String s) {
            s += "java";
        }
    
    }
    

    StringBuilder和StringBuffer的区别
    通过API可以看到StringBuilder和StringBuffer里面的方法是一样的,那他们有什么区别呢?
    StringBuffer是jdk1.0版本中加入的,是线程安全的,效率低
    StringBuilder是jdk5版本加入的,是线程不安全的,效率高

  • 相关阅读:
    (转)磁盘管理(一,二)
    (转)认识 Linux 文件系统
    (转)linux磁盘分区fdisk分区和parted分区
    (转)centos7.4 fdisk磁盘分区 格式化 挂载
    (转)磁盘分区类型选择与磁盘分区配置过程
    (转)linux配置网卡的命令
    (转)磁盘阵列RAID原理、种类及性能优缺点对比
    (转)AIX 中 Paging Space 使用率过高的分析与解决
    (转)Linux内核参数设置sysctl命令详解
    (转)linux mount (挂载命令)详解
  • 原文地址:https://www.cnblogs.com/superfly123/p/10446911.html
Copyright © 2011-2022 走看看