zoukankan      html  css  js  c++  java
  • Java日志第26天 2020.7.31

    StringBuilder类

    String字符串是常量,他们的值在创建之后便不能修改

    字符串的底层是一个final修饰的数组,所以不能改变其值(public final byte value[])

    所以当进行字符串的加减时,会创建多个字符串,占用内存使得效率低下

    而StringBuilder类会创建字符串缓冲区,可以提高字符串的操作效率。

    它的底层也是一个数组,但是没有被final修饰,所以可以改变长度(byte[] value = new byte[16])

    构造方法

    StringBuilder类有两个常用的构造方法:

    1.StringBuilder() :构造一个不带任何字符的字符串生成器,其初始容量为16个字符

    public class Demo01StringBuilder {
        public static void main(String[] args) {
            StringBuilder bu1 = new StringBuilder();
            System.out.println("bu1 = "+bu1);
        }
    }

    结果如下:

    2.StringBuilder(String str) :构造一个字符串生成器,其初始化为指定的字符串内容

    public class Demo01StringBuilder {
        public static void main(String[] args) {
            StringBuilder bu1 = new StringBuilder("abc");
            System.out.println("bu1 = "+bu1);
        }
    }

    常用方法

    1.public StringBuilder append() :添加任意类型的字符串你形式,并返回当前对象自身

    public class Demo01StringBuilder {
        public static void main(String[] args) {
            StringBuilder bu1 = new StringBuilder();
            StringBuilder bu2 = bu1.append("abc");
    
            System.out.println("bu1 = "+bu1);
            System.out.println("bu2 = "+bu2);
            //判断bu1与bu2的地址值是否相同
            System.out.println(bu1 == bu2);
        }
    }

    结果如下:

     由上述程序结果可知,append方法会将bu1的地址赋给bu2,所以此方法也可以直接调用。

    public class Demo01StringBuilder {
        public static void main(String[] args) {
            StringBuilder bu1 = new StringBuilder();
            bu1.append("abc");
            bu1.append(1);
            bu1.append(8.5);
            bu1.append("中国");
    
            System.out.println(bu1);
        }
    }

     对于返回值是一个对象的方法,可以继续调用,称为链式调用

    public class Demo01StringBuilder {
        public static void main(String[] args) {
            StringBuilder bu1 = new StringBuilder();
            bu1.append("abc").append(1).append(8+5).append("中国");
    
            System.out.println(bu1);
        }
    }

    2.public String toString() :将当前StringBuilder对象转换为String对象

    public class Demo01StringBuilder {
        public static void main(String[] args) {
            //String -> StringBuilder
            StringBuilder bu = new StringBuilder("Hello World!");
    
            //StringBuilder -> String
            String s = bu.toString();
    
            System.out.println(s);
        }
    }

    今天看了《大道至简》中的一句话,感悟很深:你的桌面整齐吗?

    如果你能把桌面收拾的井井有条,为什么不能把知识分门别类呢?学习也应该不只是盲目的大量输入,更应该善于总结,善于整理。只有脉络清晰,才是真正的学到了东西,否则学习完脑子里也是一团浆糊。

    反思自己,又何尝不是这样的呢?今后不要盲目贪多,细嚼慢咽才能好好吸收。

    明天从包装类开始学习。

  • 相关阅读:
    C++输入输出缓冲区的刷新问题
    C++11中新特性之:initializer_list详解
    GCC --verbose选项, -lpthread 和-pthread的区别
    C语言的可变参数
    YCM的安装与配置
    【机器学习】正则化的线性回归 —— 岭回归与Lasso回归
    一文读懂线性回归、岭回归和Lasso回归
    美团酒旅数据治理实践
    kettle完成一个数据库到另一个数据的整体迁移
    kettle完成一个数据库到另一个数据的整体迁移
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13412207.html
Copyright © 2011-2022 走看看