Java中字节数组与字符数组的区别

getBytes()toCharArray() 的主要区别在于它们的转换方式和结果类型:

  1. getBytes():将字符串转换为 字节数组(byte[]),通常用于字符编码转换
  2. toCharArray():将字符串转换为 字符数组(char[]),直接拆分字符串中的每个字符。

区别演示

import java.nio.charset.StandardCharsets;
import java.util.Arrays;

public class StringConversionDemo {
    public static void main(String[] args) {
        String str = "Hello 你好";

        // 1. 使用 getBytes() 将字符串转换为字节数组
        byte[] byteArray = str.getBytes(StandardCharsets.UTF_8);
        System.out.println("byte[] (UTF-8 编码): " + Arrays.toString(byteArray));
        System.out.println("byte[] 还原字符串: " + new String(byteArray, StandardCharsets.UTF_8));

        // 2. 使用 toCharArray() 将字符串转换为字符数组
        char[] charArray = str.toCharArray();
        System.out.println("char[]: " + Arrays.toString(charArray));

        // 3. 手动遍历字符数组
        System.out.print("char[] 遍历: ");
        for (char c : charArray) {
            System.out.print("'" + c + "' ");
        }
    }
}

输出结果

byte[] (UTF-8 编码): [72, 101, 108, 108, 111, 32, -28, -67, -96, -27, -91, -67]
byte[] 还原字符串: Hello 你好
char[]: [H, e, l, l, o,  , 你, 好]
char[] 遍历: 'H' 'e' 'l' 'l' 'o' ' ' '你' '好' 

区别分析

方法结果类型适用场景说明
getBytes()byte[]用于编码转换,存储到二进制文件或网络传输结果受字符编码影响,可能导致不同的字节表示
toCharArray()char[]直接操作字符,如遍历、修改结果与字符编码无关,直接拆分成字符

关键点

  1. getBytes() 依赖字符编码

    • "你好" 在 UTF-8 下转换成 多个字节(3 个字节一个汉字)。
    • 如果使用 GBK 编码,每个汉字是 2 个字节
    • 常用于 IO、网络传输等场景
  2. toCharArray() 直接拆分字符

    • 不涉及编码,每个 char 直接对应原始字符。
    • 适用于逐个字符处理(如遍历、修改)。

什么时候用 getBytes(),什么时候用 toCharArray()

  • getBytes()

    • 需要存储、传输、加密时(因为二进制数据更紧凑)。
    • 需要不同编码格式转换时,如 new String(byteArray, "GBK")
  • toCharArray()

    • 需要逐个字符操作时,如修改某个字符(但 String 本身不可变)。
    • 需要遍历和处理单个字符,不涉及编码转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值