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);
    }
}

 

 

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

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

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

明天从包装类开始学习。

posted @ 2020-07-31 21:18  Gazikel  阅读(98)  评论(0编辑  收藏  举报