java - String、StringBuffer、Strin

2017-08-08  本文已影响31人  司鑫
一 String

在 java 中,String 不是一个基本数据类型,而是一个对象,且是一个不可变的对象(被 final 修饰),这也就是说每一个对 String 的操作都是重新创建了一个 String 。

二 String 的初始化

在未对 String 进行初始化时,String 的默认值为 null,String 对象可以通过下列几种方式进行初始化:

三 String 的存储


String 存储在字符串常量池中。当我们要创建一个新的 String 对象时,先会在字符串常量池中进行查找,是否有相等的字符串,如果有那么会直接返回常量池中的字符串的引用。如果没有,那么会在常量池中先创建一个字符串,然后返回该字符串的引用。
当我们对某个字符串进行操作时,我们不需要考虑是否会对其它引用相同字符串的对象造成影响,因为每一个对字符串的操作都会重新创建。

 public static void main(String[] args) {
        String str = "aaa"; //第一次创建会在常量池中创建 ”aaa“ 字符串
        String str1 = "aaa";//第二次创建会先在常量池中查找,并返回该字符串的引用
        System.out.println(str == str1);// == 是判断二者的引用是否相等
    }

/** output
true
**/
四 StringBuffer 和 StringBuilder

StringBuffer 和 StringBuilder 都是一个可变长的字符串对象,也就是说每次对该字符串对象进行操作时,不会新创建新的字符串对象。

StringBuffer 和 StringBuilder 都继承自 AbstractStringBuilder,在 AbstractStringBuilder 中使用了 char[] 数组来保存字符串,当 char[] 数组满后,会自动追加容量(原来容量的2倍)

StringBuffer 和 StringBuilder 的区别:

五 使用场景

上一篇 下一篇

猜你喜欢

热点阅读