平常工作少用char和byte 但IO流操作必会涉及,回顾两者

在正常工作中使用char和字节的场景不多,但是如果项目中使用IO流动操作,则将涉及这两种类型。让我们一起回顾一下这两种类型。

平常工作少用char和byte 但IO流操作必会涉及,回顾两者

char和字节的比较

字节

字节字节,数据存储容量1 Byte,字节也是存储范围作为基本数据类型的概念。它不同于特殊数字存款(例如INT和Long)的类型。这种类型的大小为1byte,int为4Byte。

如果保存数字,则为1byte = 8位,2^8 = 256为-128-127。字符包括字母和汉字,字母是1 Byte,一个汉字2 Byte。也就是说,您可以使用字节变量来存储英语角色,但是没有中文角色,因为中文角色占2字节。

总之,字节是Java中的基本数据类型。该数据类型的长度为1 Byte。该字节是另一个字节,即,基本数据类型也是存储空间的基本测量单元。

char

char是Java中保留的单词。与其他语言不同,Char在Java中为16,因为Java使用Unicode。但是,从0〜127起,Unicode中包含8位ASCII代码。

在Java中使用Unicode的原因是Java的小程序允许它在世界各地运行,并且需要一个可以表达所有人类语言的字符代码。 Unicode。

char本质上是一个占两个字节的非符号阳性整数。该正整数对应于Unicode编号,以指示与Unicode编号相对应的字符。由于固定的两个字节职业,因此char只能表示65536范围内具有Unicode编号的字符,而无需指示字符以外的字符。

Unicode和UTF-8的比较

Unicode

应该注意的是,Unicode只是一个符号。它仅指定符号的二进制代码,但未指定应如何存储二进制代码。例如,汉字的“严格” Unicode是4E25,它转换为二进制数(100111000100101),这意味着此符号至少表示2个字节。指示其他更大的符号,可能需要3或4个字节,甚至需要更多字节。这里有两个严重的问题。第一个问题是如何区分Unicode和ASCII?计算机如何知道三个字节代表一个符号,而不是分别代表三个符号?第二个问题是,我们已经知道只有一个字节在英文字母中表达。如果Unicode统一规定,每个符号由三个或四个字节表示,则必须有两个英文字母。由三个字节为0,这是存储的大浪费。文本文件的大小将比不可接受的两次或三倍。它们引起的结果是:1)出现了多种Unicode存储方法,也就是说,有许多不同的二进制格式可用于表示Unicode。 2)直到互联网出现之前,不能长时间提升Unicode。

UTF-8

互联网的普及需要一种统一的编码方法。 UTF-8是Internet上使用最广泛的Unicode实现方法。其他实现方法还包括UTF-16(以两个字节或四个字节为特征)和UTF-32(以四个字节为特征),但基本上不在Internet上使用。重复,这里的关系是UTF-8是Unicode的实现方法之一。以UTF8为例,UTF8是长长的编码标准。它可以代表一个字符1〜4字节,而中文则为3个字节,ASCII字符为1个字节。为什么我们可以在Java中使用char代表中国人?因为Java使用Unicode作为编码方法。 Unicode是固定的长度编码标准。每个字符是2个字节,这是空间类型的空间。编译时,将UTF8的汉字转换为传输操作的相应Unicode。示例代码

package com.lingyejun.io;
import java.io.UnsupportedEncodingException;
/**
 * Created by Lingye on 2018/9/28 14:34
 */
public class ChineseCharCode {
    public static void main(String[] args) {
        String str = "中";
        char c = '中';
        // java使用unicode编码,一个字符占两个字节
        System.out.println("char字符 中 二进制"+Integer.toBinaryString(c));
        try {
            // UTF-8是Unicode的实现方式之一
            System.out.println(str.getBytes("UTF-8").length);
            // UTF-16也是Unicode的实现方式之一,但使用较少
            System.out.println(str.getBytes("UTF-16").length);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
}

输出结果和摘要

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

26阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

26阅读