【StringBuilder类】添加和反转方法以及StringBuilder和String相互转换

StringBuilder类

如果对字符串进行拼接操作,每次拼接都会构建一个新的String对象,既耗时又浪费内存空间,而这种操作还不可避免。我们可以通过Java提供的StringBuilder类来解决这个问题。StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是StringBuilder对象中的内容是可变的

String和StringBuilder的区别:

  • String:内容是不可变的
  • StringBuilder:内容是可变的

1.StringBuilder的构造方法

  • public StringBuilder():创建一个空白可变字符串对象,不含有任何内容

  • public StringBuilder(String str):根据字符串的内容来创建可变字符串对象

    package com.common.string;
    public class StringDemo08 {
        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());
        }
    }
    

2.添加方法和反转方法

  • public StringBuilder append(任意类型):添加数据并返回数据本身

    package com.common.string;
    //添加方法
    public class StringDemo09 {
        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);*/
            //链式编程,返回对象本身可以用对象调方法
            sb.append("hello").append("world").append("java").append(100);
            System.out.println("sb:"+sb);
        }
    }
    

    在这里对sb和sb2进行测试看它们是否相等,添加数据返回数据本身,所以返回的还是一个对象,可以直接用链式编程直接用对象调用append()方法,简化代码。

  • public StringBuilder reverse():返回相反的字符序列

    package com.common.string;
    //反转方法
    public class StringDemo09 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            sb.append("hello").append("world").append("java").append(100);
            System.out.println("sb:"+sb);
            sb.reverse();
            System.out.println("sb:"+sb);
        }
    }
    

在这里插入图片描述

3.StringBuilder和String相互转换

  • StringBuilder转换为String

    public String toString():通过toString()就可以实现把StringBuilder转换为String

    package com.common.string;
    public class StringDemo10 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            sb.append("hello");
            String s = sb.toString();
            System.out.println(s);
        }
    }
    
  • String转换为StringBuilder

    public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder

    package com.common.string;
    public class StringDemo10 {
        public static void main(String[] args) {
            String s="hello";
            StringBuilder sb = new StringBuilder(s);
            System.out.println(sb);
        }
    }
    

4.案例:使用StringBuilder的append方法拼接字符串

需求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,调用该方法并在控制台输出结果。例如,数组为int[] arr={1,2,3},执行方法后的输出结果为:[1,2,3]

思路:

1.定义一个int类型的数组,用静态初始化完成数组的初始化

2.定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回。返回值类型为String,参数列表为int[] arr

3.在方法中用StringBuilder按照要求进行拼接,并把结果转成String返回

4.调用方法,用一个变量接收结果

5.输出结果

package com.common.string;
//使用StringBuilder的append方法进行拼接
public class StringDemo11 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        String s = arrayToString(arr);
        System.out.println("s:"+s);
    }
    public static String arrayToString(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("]");
        String s = sb.toString();//将StringBuilder转换为String类型
        return s;
    }
}

在这里插入图片描述

5.案例:使用StringBuilder中的reverse方法反转字符串

需求:定义一个方法,实现字符串反转,键盘录入一个字符串,调用该方法后,在控制台输出结果。例如:键盘录入abc,输出结果cba

思路:

1.键盘录入一个字符串,用Scanner实现

2.定义一个方法,实现字符串反转。返回值类型为String,参数为String s

3.在方法中使用链式编程用对象先调用reverse方法,再将字符串转换为String返回

4.调用该方法,用一个变量接收结果

5.输出结果

package com.common.string;
import java.util.Scanner;
public class StringDemo12 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String line = sc.nextLine();
        String s = reverse(line);
        System.out.println("s:"+s);
    }
    public static String reverse(String s){
        //将String转为StringBuilder---reverse()----String
        /*StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        String ss = sb.toString();
        return ss;*/
        //使用链式编程
        return new StringBuilder(s).reverse().toString();
    }
}

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值