2.1 整型变量
我们学习的第一个变量,就是整数类型的变量。
Java的变量都有严格的类型,例如整数类型的变量只能赋值为整数,如果给它一个小数,就会出编译错误。
Java的整数类型最常用的是int(英文整数是integer),我们这样定义一个整型变量:
int i=8;
这句代码的意义是:定义一个整型变量i,并赋值为8。int是比较常用的类型,除此以外还有以下的整数类型,它们的区别在于数值范围:
类型 | 占用内存大小 | 数值范围 |
---|---|---|
byte | 1byte(8位) | -128~127 |
short | 2byte(16位) | -32768~32767 |
int | 4byte(32位) | -2147483648~2147483647 |
long | 8byte(64位) | -9223372036854775808~9223372036854775807 |
这些最大值最小值就是通过占用的位计算出来的。例如byte占8位,其中一位用来表示正负号,那么就剩下7位,当7位全部是1,就是所能表达的最大值,那就是2的8次方减去1,相当于1111111=10000000-1
按照这个思路,位数小的可以放到位数大的变量,但是反过来的话,就有可能保存不下了。这就好像一把8尺长的东西,放入32尺的容器没问题,反过来一个32尺长的东西放入8尺的容器,那就要切掉24尺。
byte b=2;
int i=b;
//这行代码要出错
short s=i;
shorts=i显示的错误是无法将short转换成int。这就是因为大的int类型的值不能放入小的short类型变量。
四种整数类型的定义和赋值都是类似的,但long型变量要特别注意,赋值给它的整数最后要加字母L(大小写都可以,但一般用大写,因为小写和数字1太像了):
//这是错的!
long a=5147483647;
//这是正确的
long a=5147483647L;
上面第一个赋值错误原因是:任何一个数字默认为int类型,一个超过int范围的数字(末尾不加L),本身已经超过了int类型的范围,在此层面已经发生了语法错误。