Files
javaSE-0113/javaSE-day01/src/com/inmind/stringbuilder06/Demo24.java

61 lines
2.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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