进阶day01-StringBuilder拼接字符串
This commit is contained in:
60
javaSE-day01/src/com/inmind/stringbuilder06/Demo24.java
Normal file
60
javaSE-day01/src/com/inmind/stringbuilder06/Demo24.java
Normal file
@@ -0,0 +1,60 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user