61 lines
2.9 KiB
Java
61 lines
2.9 KiB
Java
package com.inmind.stringbuilder06;
|
||
/*
|
||
注意:string类的拼接,会导致多余的字符串,就会字符串常量池中占用内存,那么可以使用StringBuilder来解决
|
||
-----------------------------------------------------
|
||
StringBuilder() 构造一个没有字符的字符串构建器,初始容量为16个字符。
|
||
StringBuilder(String str) 构造一个初始化为指定字符串内容的字符串构建器。
|
||
|
||
StringBuilder的2个常用方法
|
||
public StringBuilder append(...) :添加任意类型数据的字符串形式,并返回当前对象自身。
|
||
public String toString() :将当前StringBuilder对象转换为String对象。
|
||
StringBuilder reverse() 导致该字符序列被序列的相反代替。
|
||
|
||
StringBuilder的弊端:拼接的内容最终都会变成字符串
|
||
|
||
扩展:StringBuilder与String可以进行转换,目的在于使用各自特有功能
|
||
StringBuilder->String:toString()方法
|
||
String->StringBuilder:构造方法new StringBuilder("abc")
|
||
|
||
sb:能够反正,拼接
|
||
String:99%的情况都会使用到的
|
||
|
||
注意:StringBuilder是线程不安全,但是效率高!!!StringBuffer是线程安全,效率低,他们的API基本雷同
|
||
*/
|
||
public class Demo24 {
|
||
public static void main(String[] args) {
|
||
|
||
String str1 = "hello";
|
||
String str2 = "world";
|
||
String str3 = "haha";
|
||
//这样写字符串对象有几个???会产生5个,尽量不要在for循环中使用+号拼接出一个结果
|
||
System.out.println(str1+str2+str3);
|
||
//使用StringBuilder来进行字符串的拼接
|
||
StringBuilder sb = new StringBuilder();//sb保存的是地址
|
||
StringBuilder sb1 = sb.append(str1);//sb1保存的是地址
|
||
System.out.println(sb == sb1);//在引用数据类型中,==就是比较地址
|
||
//链式调用:可以像链条一样拼接新的内容
|
||
StringBuilder sb2 = sb.append(1.0).append(2.0F).append(true)
|
||
.append(1).append("heihei").append(new char[]{'a', 'b', 'c'});
|
||
System.out.println(sb == sb1);
|
||
System.out.println(sb == sb2);
|
||
|
||
//假设for循环对一个很长内容的数据进行拼接完毕,最终我们希望得到这个String
|
||
//StringBuilder---->String
|
||
String sbStr = sb.toString();
|
||
System.out.println(sbStr);//println方法打印任何引用数据类型时,底层源码一定是调用的该引用数据类型的toString方法返回的内容
|
||
System.out.println(sb);
|
||
System.out.println(sb1);
|
||
System.out.println(sb2);
|
||
|
||
//请帮我将1~100的数字拼接成字符串
|
||
String str = "开始";
|
||
StringBuilder sb3 = new StringBuilder(str);
|
||
for (int i = 1; i <= 100; i++) {
|
||
//str+=i;//产生非常多的不需要字符串常量,占用内存
|
||
sb3.append(i);
|
||
}
|
||
System.out.println(sb3);
|
||
System.out.println(sb3.reverse());
|
||
}
|
||
}
|