本文主要是介绍第一章.StringBuilder类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.StringBuilder的介绍
1.概述:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证线程同步
2.作用:主要作用是拼接字符串
3.明明String可以做字符串拼接,那为啥还要学StringBuilder?
- a.String做拼接的时候,会产生新的字符串对象,如果要是频繁用String拼接,会出现很多新的字符串对 象,占用内存
- b.StringBuilder底层自带缓冲区,我们拼接的字符串都会出现在缓冲区中,不会每次拼接不会随意产生新 字符串对象,效率高,省内存
4.StringBuilder特点:
- a.StringBuilder底层也是一个char数组(缓冲区),但是这个char数组没有被final修饰,地址值可变
- b.StringBuilder底层的缓冲区默认为16
- c.StringBuilder拼接字符串,会自动放到缓冲区中,如果拼接的字符串,超出了缓冲区长度,缓冲区(数 组)会自动扩容
- d.StringBuilder底层扩容为老数组的2倍+2
- e.创建一个新长度的新数组,将老数组的元素复制到新数组中,然后将新数组地址值给老数组
2.StringBuilder的使用
1.构造:
StringBuilder()
StringBuilder(String str)
public class Demo01StringBuilder {public static void main(String[] args) {StringBuilder sb1 = new StringBuilder();System.out.println(sb1);System.out.println("=====================");StringBuilder sb2 = new StringBuilder("abc");System.out.println(sb2);}
}
2.常用方法:
- StringBuilder append(任意类型数据) -> 往缓冲区中追加内容,返回StringBuilder自己-> 可以 理解为拼接
- StringBuilder reverse()->内容翻转,返回StringBuilder自己
- String toString()->将StringBuilder对象转成String对象
public class Demo02StringBuilder {public static void main(String[] args) {//StringBuilder append(任意类型数据) -> 往缓冲区中追加内容,返回StringBuilder自己-> 可以理解为拼接StringBuilder sb1 = new StringBuilder();sb1.append("张无忌");sb1.append("周芷若");System.out.println(sb1);/*
如果调用某一个方法,返回了某一个对象,就可以直接往后点此对象的方法
链式调用
*/sb1.append("赵敏").append("灭绝师太").append("金毛狮王").append("紫衫龙王");System.out.println(sb1);//StringBuilder reverse()->内容翻转,返回StringBuilder自己sb1.reverse();System.out.println(sb1);//String toString()->将StringBuilder对象转成String对象String s = sb1.toString();System.out.println(s.length());}
}
需求:
键盘录入一个字符串,判断是否为回文内容-> 比如:
上海自来水来自海上
1234321
abcba
public class Demo03StringBuilder {public static void main(String[] args) {//1.创建Scanner对象Scanner sc = new Scanner(System.in);System.out.println("请您输入一个字符串:");String data = sc.next();//2.创建StringBuilder对象,将输入的字符串放进去StringBuilder sb = new StringBuilder(data);//3.翻转内容sb.reverse();//4.将StringBuilder对象转成String对象String s = sb.toString();if (s.equals(data)){System.out.println("是回文内容");}else{System.out.println("不是回文内容");}}
}
3.练习
定义一个数组,以[元素1, 元素2, 元素3..]的形式输出,用StringBuilder拼接
自己写
class Aain {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {sb.append(arr[i]);if (i != arr.length - 1) {sb.append(", ");}}sb.append("]");System.out.println(sb.toString());}}
4.String 和StringBuilder以及StringBuffer区别
String: 拼接字符串效率低,每拼接一次,都会产生一个新的字符串,耗费内存资源
StringBuilder和StringBuffer区别:
相同点: 用法一样,作用一样
不同点: StringBuilder: 效率比StringBuffer高 线程不安全
StringBuffer: 效率低 线程安全
拼接效率来说: StringBuilder>StringBuffer>String
小结:简单记录一下。
这篇关于第一章.StringBuilder类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!