用StringBuffer与String解决同一个问题

本文介绍了如何在Java中实现字符串与StringBuffer之间的转换、数组拼接成字符串的方法、字符串反转及判断字符串是否为对称字符串等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于StringBuffer与String的相互转换:
将String转换成StringBuffer:

String s = "hello";
// 方式1:通过构造方法
StringBuffer sb = new StringBuffer(s);
// 方式2:通过append()方法
StringBuffer sb2 = new StringBuffer();
sb2.append(s);

注意:不能把字符串的值直接赋值给StringBuffer
StringBuffer sb = “hello”;
String s = “hello”;
StringBuffer sb = s;
这两种赋值都是错误的

将StringBuffer转换成String:

StringBuffer buffer = new StringBuffer("java");
// 方式1:通过构造方法
String str = new String(buffer);
// 方式2:通过toString()方法
String str2 = buffer.toString();

StringBuffer的toString()方法的返回值类型是String!!!

要求一:把数组拼接成一个字符串

public class BufferAndString_02 {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = { 44, 33, 55, 11, 22 };

        // 方式1:用String做拼接的方式
        String s1 = arrayToString(arr);
        System.out.println("s1:" + s1);

        // 方式2:用StringBuffer做拼接的方式
        String s2 = arrayToString2(arr);
        System.out.println("s2:" + s2);
    }

    // 用StringBuffer做拼接的方式
    public static String arrayToString2(int[] arr) {
        StringBuffer sb = new StringBuffer();

        sb.append("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                sb.append(arr[x]);
            } else {
                sb.append(arr[x]).append(", ");
            }
        }
        sb.append("]");
        return sb.toString();
    }

    // 用String做拼接的方式
    public static String arrayToString(int[] arr) {
        String s = "";
        s += "[";
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                s += arr[x];
            } else {
                s += arr[x];
                s += ", ";
            }
        }
        s += "]";
        return s;
    }
}

要求二:把字符串反转

import java.util.Scanner;

public class BufferAndString_03 {
    public static void main(String[] args) {
        // 键盘录入数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数据:");
        String s = sc.nextLine();

        // 方式1:用String做拼接
        String s1 = myReverse(s);
        System.out.println("s1:" + s1);
        // 方式2:用StringBuffer的reverse()功能
        String s2 = myReverse2(s);
        System.out.println("s2:" + s2);
    }

    // 用StringBuffer的reverse()功能
    public static String myReverse2(String s) {
        // StringBuffer sb = new StringBuffer();
        // sb.append(s);
        // StringBuffer sb = new StringBuffer(s);
        // sb.reverse();
        // return sb.toString();

        // 简易版
        return new StringBuffer(s).reverse().toString();
    }

    // 用String做拼接
    public static String myReverse(String s) {
        String result = "";
        char[] chs = s.toCharArray();
        for (int x = chs.length - 1; x >= 0; x--) {
            result += chs[x];
        }
        return result;
    }
}

要求三:判断一个字符串是否是对称字符串
例如”abc”不是对称字符串,”aba”、”abba”、”mnanm”是对称字符串

import java.util.Scanner;

public class BufferAndString_03 {
    public static void main(String[] args) {
        // 创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = sc.nextLine();

        // 一个一个的比较
        boolean b = isSame(s);
        System.out.println("b:" + b);

        // 利用字符串缓冲区的反转功能
        boolean b2 = isSame2(s);
        System.out.println("b2:" + b2);
    }


    public static boolean isSame2(String s) {
        return new StringBuffer(s).reverse().toString().equals(s);
    }

    public static boolean isSame(String s) {
        boolean flag = true;
        // 把字符串转成字符数组
        char[] chs = s.toCharArray();
        for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {
            if (chs[start] != chs[end]) {
                flag = false;
                break;
            }
        }
        return flag;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值