为什么学习stringBuilder?
概述:
stringbuilder可以看成一个容器,创建之后里面的内容是可以改变的
作用:提高字符串的操作效率
构造方法
方法名 | 说明 |
public stringBuilder append (任意类型) | 添加数据返回对象 |
public stringBuilder reverse() | 反转容器中的内容 |
public int length() | 返回长度(字符串出现的个数) |
pubilc string toString | 通过toString就可以吧stringBuilder转换成string |
代码练习
说明:
stringBulider是Java已经写好的一个类
所以在底层进行了一些特殊的处理
打印出来的并不是地址值而是一个属性值
用空参创造一个容器对象这个对象一开始是没有任何数据的
public static void main(String[] args) {
//创建一个stringBuilder对象
StringBuilder sb = new StringBuilder("小橙");
//添加元素
sb.append(1);
sb.append(2);
sb.append(3);
//反转(在容器内部进行了反转,但是和字符串不一样,字符串是不能够直接进行反转的)
sb.reverse();
//获取长度
int length = sb.length();
System.out.println(sb);
System.out.println(length);
}
运行结果
321橙小
5
单独练习tostring
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("123");
sb.append("123");
sb.append("123");
sb.append("123");
sb.append("123");
sb.append("123");
// sb只是一个帮助我们进行字符串操作的一个工具,这时候并不是一个字符串
//所以我们需要他成为一个字符串的时候就应该使用tostring方法将其变成一个字符串
String str = sb.toString();
System.out.println(sb);
}
运行结果如下
123123123123123
链式编程
依赖前一个方法的结果再去调用后面的方法
代码案例
public static void main(String[] args) {
int num = getString().substring(1).length();
System.out.println(num);
}
public static String getString(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String zi = sc.next();
return zi;
}
练习案例
public static void main(String[] args) {
// 需求
// 键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
reverse(str);
}
public static void reverse(String str){
StringBuilder sb = new StringBuilder();
String str1 = sb.append(str).reverse().toString();
if (str1.equals(str)){
System.out.println("这是一个对称字符串!");
}else
System.out.println("这不是一个对称字符串!");
}
应用场合
字符串的拼接
字符串的反转
拼接字符串
需求:定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法,并在控制台输出结果。
例如:数组为int[] arr = {1,2,3};
执行方法后的输出结果为:[1, 2, 3]
首先下面是我自己写的代码
public static void main(String[] args) {
// 定义一个字符串
int[] arr = {45,52,6,3};
System.out.println(pinjie(arr));
}
// 定义一个方法进行字符串的拼接
public static String pinjie(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]).append(',');
}
}
sb.append(']');
return sb.toString();
}
下面的是老师写的代码:
public class StringBuilderDemo7 {
public static void main(String[] args) {
//1.定义数组
int[] arr = {1,2,3};
//2.调用方法把数组变成字符串
String str = arrToString(arr);
System.out.println(str);
}
public static String arrToString(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]).append(", ");
}
}
sb.append("]");
return sb.toString();
}
}
我的就是少考虑了经数组编程字符串,但是在方法体重已经将数组转换成了字符串,这里还是有点不理解为什么这一步要这样子做(老师写的第八行代码)