char 和 byte 区别
Posted 菜鸟心晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char 和 byte 区别相关的知识,希望对你有一定的参考价值。
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。
char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
1,char可以表示中文字符,byte不可以;
2,char可以表示一个整数,但不能带符号,只能是正数,范围是0-65535;byte有符号型整数,范围是-128-127;
3,char对于英文字符可以直接转换(按Unicode码) 例如 :char c = 65; System.out.println(c); 结果为A
注意:char c =‘A‘ ,变量中实际存储的是该字符的Unicode编码
题外话:
示例: 下面的程序计算了一个循环的迭代次数,并且在该循环终止时将这个计数值打印了出来。那么,它打印的是什么呢?
public static void main(String[] args) { byte bytes[] = new byte[256]; for (int i = 0; i < 256; i++) bytes[i] = (byte)i; String str = null; str = new String(bytes); for (int i = 0, n = str.length(); i < n; i++) System.out.println((int)str.charAt(i) + " "); }
byte数值通过String构造器被转换成char数值,最后char数值被转型成int数值被打印出来.
因为char是无符号的,所以byte的负值转成 char型是一个非数值型的特定字符.String构造器在未指定字符集的时候,采用jre的缺省字符集. 在通过解码使用平台缺省字符集的指定byte数组来构造一个新string 时,该新string 的长度是字符集的一个函数,因此,它可能不等于byte数组的长度.当给定的所有字节在缺省字符集中并非全部有效时,这个构造器是不确定的.
只有"ISO-8859-1"能让该程序按顺序打印0-255,此处应显示的指定字符集.str = new String(bytes,"ISO-8859-1");
以上是关于char 和 byte 区别的主要内容,如果未能解决你的问题,请参考以下文章
Oracle varchar2或char类型的byte和char的区别