Java中字符与字节常识

字符集与编码

字符和字节

字节

即byte,是Java中的一种基本数据类型,在计算机中,1byte = 8bit,1个字节等于8个比特位
字节是计算机中数据存储的最小单位,我们通常都是说 该文件是多少字节,也就是多少byte
计算机中的内存换算就是采用byte作为单位
例如:
		1 KB = 1024 byte
		1 MB = 1024 KB
		1 GB = 1024 MB
		1 TB = 1024 GB
实际上,一个字节本质就是8位二进制,计算机中采用二进制的方式来存储数据.8个二进制位能表示的范围就是255

字符

字节是计算机中存储的基本单位,字符是现实生活中人们使用的记号,简单来说,字符就是一种记号.
现实生活中,"a","中","国"等都是一个字符.

字节和字符的关系

想象一下,计算机只知道字节,而在现实生活中,人们只知道字符,那要怎么把字符跟字节联系起来呢?
于是,这就产生了编码的概念.
所谓编码,通俗来讲,就是将字符与字节之间进行转换.
字符会按照一定的编码规则变成字节,在不同的编码规则中,一个字符可能由一个字节存储,也可能有多个字节存储

字符集

字符集也就是字符的集合,包含了很多字符.

编码与解码

String编码

方法名称 说明 byte[] getBytes() 使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中 byte[] getBytes(String charsetName) 使用指定的字符集将该String编码为一系列字节,将结果存储到新的字符数组中

String解码

构造器 说明 String(byte[] bytes) 通过使用平台的默认字符解码指定的字节数组来构造新的String String(byte[] bytes,String charsetName) 通过指定的字符集解码指定的字节数组来构造新的String

代码演示

// 把文字转换成字节
        String name = "我爱你中国";
        // 编码 : 中文编码成字符
        byte[] bytes = name.getBytes(StandardCharsets.UTF_8);
        System.out.println(Arrays.toString(bytes));

        // 解码 : 字符编码成中文 把字节转成对应的中文形式 (编码 和 解码 的标准要相同 否则会出现乱码)
        String rs = new String(bytes);
        System.out.println(rs);
经验分享 程序员 微信小程序 职场和发展