第3节StringBuilder类
StringBuilder概述
public static void main(String[] args) { String s="Hello"; s+="World"; System.out.println(s); }
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。那么有没有一种比较好的方式可以解决这个问题呢?答案是肯定的,我们可以通过Java提供的StringBuilder类就可解决一个问题。
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是
StringBuilder对象中的内容是可变的
String和StringBuilder的区别:
- String:内容是不可变的
- StringBuilder:内容是可变的
StringBuilder构造方法
public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
package com.itheima_01; public class StringBuilderDemo { public static void main(String[] args) { StringBuilder sb=new StringBuilder(); System.out.println("sb:"+sb); System.out.println("sb.length():"+sb.length()); StringBuilder sb2=new StringBuilder("hello"); System.out.println("sb2:"+sb2); System.out.println("sb2.length()"+sb2.length()); } }
StringBuilder的添加和反转方法
public StringBuilder append(任意类型) 添加数据,并返回对象本身
public StringBuilder reverse() 返回相反的字符序列
package com.itheima_01; public class StringBuilderDemo02 { public static void main(String[] args) { //创建对象 StringBuilder sb=new StringBuilder(); StringBuilder sb2 = sb.append("hello"); System.out.println("sb:"+sb); System.out.println("sb2:"+sb2); System.out.println(sb=sb2); } }
sb.append("hello");
sb.append("world");
sb.append("java");
sb.append(100);
System.out.println("sb:"+sb);
//链式编程
//链式编程 sb.append("hello").append("world").append("java").append(100); System.out.println("sb:"+sb);
//反转
//链式编程 sb.append("hello").append("world").append("java").append(100); //反转 sb.reverse(); System.out.println("sb:"+sb);
StringBuilder和String相互转换
1、StringBuilder转换为String
public String toString():通过toString()就可以实现把StringBuilder转换为String
2、String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder
package com.itheima_01; public class StringBuilderDemo03 { public static void main(String[] args) { StringBuilder sb=new StringBuilder(); sb.append("hello"); //StringBuilder转换为String String s=sb.toString(); System.out.println(s); } }
String s1="hello"; StringBuilder sb2=new StringBuilder(s1);//String转换为StringBuilder System.out.println(sb2);
案例:拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
并在控制台输出结果。例如,数组为int[] arr={1,2,3};,执行方法后的输出结果为:[1,2,3]
package com.itheima_01; /* * 需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法, 并在控制台输出结果。例如,数组为int[] arr={1,2,3};,执行方法后的输出结果为:[1,2,3] * */ public class StringBuilder04 { public static void main(String[] args) { int[] arr = {1, 2, 3}; String s = sb(arr); System.out.println(s); } public static String sb(int[] arr){ StringBuilder sb=new StringBuilder(); sb.append("["); for(int i=0;i<arr.length;i++){ if(i==arr.length-1){ sb.append(arr[i]); }else{ sb.append(arr[i]+", "); } } sb.append("]"); String s=sb.toString(); return s; } }
案例:字符串反转
需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果
例如:键盘录入abc,输出结果cba
package com.itheima_01; import java.util.Scanner; public class StringBuilderDemo05 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一串字符"); String line = sc.nextLine(); String s = sb(line); System.out.println(s); } public static String sb(String line) { StringBuilder sb = new StringBuilder(line); sb.reverse(); String s = sb.toString(); return s; } }
//方法二: return new StringBuilder(line).reverse().toString();
通过帮助文档查看StringBuilder中的方法
public StringBuilder append(任意类型) 添加数据,并返回对象本身
public StringBuilder reverse() 返回相反的字符序列
public String toString() 通过toString()就可以实现把StringBuilder转换为String

浙公网安备 33010602011771号