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类型的范围,在此层面已经发生了语法错误。

练习题

  • 填空题(直接填入答案,立刻批改)
    1.定义两个整型变量,一个命名为a,一个命名为b,初值都设置为1 (4分) [编程填空]
    public static void main(String[]args){            ;            ;    System.out.println(a);    System.out.println(b);}
    
    2.内存空间 (4分) [填空]
    int在内存占用32位的空间,其中一位用于表示正负数,剩下的31位就是int所能表达的最大的数:2的31次方减1,这个数字是2147483647
    除了这个范围,还有别的范围的整型变量:
    byte 8位
    short 16位
    int 32位
    long 64位

    请问byte类型所能表达的最大值是        ,最小值是        ?
    3.类型转换 (2分) [填空]
    不同的整数类型可以转换,例如:
    byte b=8;
    int i=b;
    但是反过来是不行的,下面这样是会出编译错误的:
    int i=8;
    byte b=i;
    道理很简单,int占用的内存空间是32,byte是8位,int类型的变量当然可以把byte类型的变量完全保存,反过来,byte类型的内存空间不足以保存一个int变量。
    这个类型转换的原则适用于大部分的变量类型转换。

    如果一定要强制转换,可以使用这个方法:
    int i=8;
    byte b=(byte)i;
    使用(变量类型)这样的操作,但这样强制转换,就是硬塞进去,如果数据超出,就会出现奇怪的数字
    b的值是        ,如果i的值是324,那么b的值是        ,这里就发生了溢出并且直接剪切掉了多余部分,于是得到一个这样的结果
    4.定义整型变量 (6分) [编程填空]
    按顺序定义整型变量。
    定义一个byte变量a,赋值为1;
    定义一个short变量b,赋值为2;
    定义一个long变量c,赋值为2036854775807。
    public static void main(String[]args){            ;    System.out.println(a);            ;    System.out.println(b);            ;    System.out.println(c);}
    
  • 判断题
    1.如果是整数5,可以用int,byte,或者short,long类型的变量来保存 (2分) [判断]
    2.下面的代码有语法错误 (2分) [判断]
    long te=69L;
    
    3.下面的代码有语法错误 (2分) [判断]
    int i=8L;