如题,做个重新认识的总结,只供参考,如果不准确的,请回复,谢谢
bit: 1 bit位 = 1 二进制数据
byte: 1 byte = 8 bit位 (-128 ~ 127)
字母: 1 字母 = 1 byte = 8 bit(位)
short: 16位
char: Unicode字符,16bit位
int: 32bit位,比如int 类型占用4个字节,32位
long: 64bit位
float: 32bit位
double: 64bit位
string:
汉字:1 汉字 = 2 byte = 16 bit
《《***这里不是很准确,当编码不同的时候,1个汉字所占的字节数也会有所不同,有些编码是占 2个字节,有些则不是,可能是 3个或者 4个***》》
首先认识下Java中的数据类型:
1、Int整型:byte(8位,-128~127)、short(16位)、int(32位)、long(64位)
2、Float型:float(32位)、double(64位)
3、char字符:unicode字符(16位)
下面参考了这篇文章:
char与byte的区别:http://blog.csdn.net/luoweifu/article/details/7770588
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127;
char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535;
char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符
1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别
System.out.println(c); //?
byte d1 = 1;
byte d2 = -1;
byte d3 = 127; // 如果是byte d3 = 128;会报错
byte d4 = -128; // 如果是byte d4 = -129;会报错
System.out.println(d1); //1
System.out.println(d2); //-1
System.out.println(d3); //127
System.out.println(d4); //-128
2、 char可以表中文字符,byte不可以,如:
char e1 = '中', e2 = '国';
byte f= (byte) '中'; //必须强制转换否则报错
System.out.println(e1); //中
System.out.println(e2); //国
System.out.println(f); //输出是45,这时已经不是能完全代表汉字中了,是把 中 这个字低位字节赋值给f了
System.out.println((char)f); //输出是 -,可以看到把汉字 中 转到 f byte,在从 f转回 char型,已经丢失了高位字节
3、 char、byte、int对于英文字符,可以相互转化,如:
byte g = 'b'; //b对应ASCII是98
char h = (char) g;
char i = 85; //U对应ASCII是85
int j = 'h'; //h对应ASCII是104
System.out.println(g); //98
System.out.println(h); //b
System.out.println(i); //U
System.out.println(j); //104