Notes d'étude JAVA - classes couramment utilisées (2) - StringBuffer, StringBulider (relation de classe String)

Quelles sont les similitudes et les différences entre String.StringBuffer.StringBuilder ?

​ String : séquence de caractères immuable ; la couche inférieure utilise charStockage
 StringBuffer : séquence de caractères variable ; thread-safe, faible efficacité ; la couche inférieure utilise charStorage
​ StringBuilder : séquence de caractères variable ; nouveau dans jdk5.0, thread non sécurisé, haute efficacité ; la couche inférieure utilise charstockage

String str1 = new String("abc");//char[] value = new char[]{ 'a' , 'b' , ' c' };
StringBuffer sb1 = new StringBuffer(); //char[] value = new char[16];底层创建了一个长度16的char型数组
System.out.printLn(sb1.Length()); //
sb1.append( 'a'); //value[e] = 'a ';sb1 .append( ' b'); //vaLue[1] = 'b';
StringBuffer sb2 = new StringBuffer( "abc"); //char[] value = new char[ " abc".Length()+16];
问题1.System.out.printLn(sb2.Length());//3
问题2.扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。

Par défaut, l'expansion est de 2 fois la capacité d'origine + 2, et les éléments du tableau d'origine sont copiés dans le nouveau tableau en même temps.
Suggestion :
lors du développement, il est recommandé d'utiliser : StringBuffer(int capacity) ou StringBuilder(int capacity)
Si le développement n'implique pas de données partagées (et de sécurité des threads), il est plus efficace d'utiliser StringBuilder

Méthodes courantes de StringBuffer (StringBuilder est le même)

StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
StringBuffer delete(int start,int end):删除指定位置的内容(区间左闭右开)
StringBuffer replace(int start, int end,string str):把[start, end)位置替换为
StringBuffer insert(int offset,xxx):在指定位置插入xXx
StringBuffer reverse() :把当前字符序列逆转

public int indexOf(String str)
public string substring(int start,int end)//返回一个左闭右开的子串
public int length()返回字符串长度
public char charAt(int n )
public void setCharAt(int n ,char ch)l
    总结:
        增: append(xxx)
        删: delete(int start,int end)
        改: setCharAt(int n ,char ch) / replace(int start, int end,string str)
        查: charAt(int n )
        插: insert(int offset, xxx)
        遍历:for + charAt()/toSting()

Je suppose que tu aimes

Origine blog.csdn.net/m0_46450708/article/details/119616225
conseillé
Classement