Java学习笔记 - 03
变量的数据类型
使用数据类型的目的是为了限制变量中存储的数据,限制变量使用内存空间的大小,使程序更加高效,严谨。
基本的数据类型有:
- 整形
整形可以分成四种,分别是:byte,short(短整型),int(整形),long(长整型)。
byte型数据占用内存空间的大小为1字节。 数据范围是-128~127
short型数据占用内存空间的大小为2字节。 数据范围是-32768~32767
int型数据占用内存空间的大小为4字节。 数据范围是-2^31~(2^31 - 1),一般数据的默认类型都是int
long型数据占用内存空间的大小为8字节。数据范围是-2^63~(2^63 - 1)
注:之所以分成四类,主要是所用数据的取值范围。过小的数据没必要用过大的数据类型存储,以免浪费内存空间。
byte b1 = 100; //byte b2 = 200; 这一句会报错,因为200超出了byte的存储范围 byte b2 = (byte)200;//强制类型转换,数据损失,b2值为11001000,是一个负数
在以上代码中,b1的值为100,但b2的赋值语句会报错,错误信息为“从int转换到byte可能会有损失”。这是因为byte类型的数据范围是-128~127,200超过了这个范围,不能存入byte型变量中。b1的赋值语句中,100(二进制数据为:00000000 00000000 00000000 01100100)也为整数,但因为100的有效数据可以直接放入byte中,因此计算机自动将常量100之前的所有空字节删去,向下自动类型转换int ->byte。200(进制数据为:00000000 00000000 00000000 11001000)也可强制类型转换成byte,但会有数据损失,存入byte自动删去前三字节的数据,变成11001000,这是一个负数。
byte b3=100; byte b4=100; //byte b5=b3+b4; 报错信息:不兼容的类型: 从int转换到byte可能会有损失 byte b5=(byte)(b3+b4);
以上代码中,b3,b4都是规范的byte型数据,但 b3 + b4的值超过了byte的存储范围。其实即使b3 = 1,b4 = 2,b3 +b4也会报错,因为b5并不知道两个byte类型中的数据相加后是否超过byte的存储范围,而b3 +b4是int型的数据,必须强制类型转换后才能存入,且可能会存在数据损失。
short类型存在和byte相同的问题。但这个问题在int和long类型中不存在。对int类型和long类型来说,多个数据相加时,若超出其存储范围,会有数据溢出,但不会报