Java中 “字符类型”与“字节类型”的区别是什么?

Python07

Java中 “字符类型”与“字节类型”的区别是什么?,第1张

byte字节类型是JAVA中最小的数据类型,它在内存中占8位,取值范围从-128到127,

赋值:byte i = 127注:byte型在赋值时,一旦超过127或小于-128,则会产生编译错误。

char字符类型在内存中占2个字节。表示一个字符,也可以使用A SCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0到655 35。

赋值:char i = 'a'或者 char i = 97

注:在java中,字符的表现形式为单个字符加上一对单引号修饰。

首先得知道byte的概念和作用:

byte即字节的意思,是java中的基本类型,用来申明字节型的变量。

通常在读取非文本文件时(如图片,声音,可执行文件)需要用字节数组来保存文件的内容,在下载文件时,

也是用byte数组作临时的缓冲器接收文件内容。所以说byte在文件操作时是必不可少的。不管是对文件写入还是

读取都要用到。byte在java中是一种是数据类型,代表一个字节,一个字节包含8个位,所以,byte类型的取值范

围是-128到127。

在某些程序中(尤其是和硬件有关的程序)会将某些数据存储到字节类型的变量中,比如00110010,其中每个

位都代表一个参数,然后以位运算的方式对参数进行取值和赋值操作。

机器只知道字节,而字符却是语义上的单位,它是有编码的,一个字符可能编码成1个2个甚至3个4个字节。这跟字

符集编码有关系,英文字母和数字是单字节,但汉字这些自然语言中的字符是多字节的。一个字节只能表示255个字

符,不可能用于全球那么多种自然语言的处理,因此肯定需要多字节的存储方式。而InputStream, OutputStream

它们是处理字节流的,就是说假设所有东西都是二进制的字节,而 Reader, Writer 则是字符流,它涉及到字符集

的问题;按照ANSI编码标准,标点符号、数字、大小写字母都占一个字节,汉字占2个字节。按照UNICODE标准所有

字符都占2个字节。

字符流处理的单元为2个字节的unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,

操作字节和字节数组。所以字符流是由java虚拟机将字节转化为2个字节的unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是

音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.

所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.

字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;

2.

字节流提供了处理任何类型的io操作的功能,但它不能直接处理unicode字符,而字符流就可以。