学习任务:

视频学习Java整型的基本使用

动手测试案例

整型包括 byte、short、int、long四种数据类型,每个类型所占用的内存空间及表示数据的范围不同,byte表示的数据范围最小,long表示的数据范围最大,参见八种数据类型(表格)。

每种类型所占用的位数不同所以可表示的数据范围不同,具体数据范围的大小请参见“补码基础”章节了解求证过程。

byte、short、int、long在什么情况下使用呢?比如:表示中国的人口用什么类型,用短整型可以吗?短整型最大可表示 32767,显然不够。用整型int正合适,相比long类型中国15亿人口数更接近int的最大数,用长整型long则有点浪费空间。

一个例子:

/**
 * Java整型数据类型测试 
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class DataTypeDemo1 {

	public static void main(String[] args) {
		//定义一个byte变量,2在byte的范围内,赋值成功
		byte a = 2;
		//下边的报错,因为128已经超过byte的最大值
		//byte b = 128;
		byte b = 127;
		//定义一个短整型变量,256在short的范围内,赋值成功
		short c = 256;
		//定义一个整型变量
		int d = 512;
		//下边的报错,因为2147483648已经超过int的最大值
		//int e = 2147483648;
		//定义一个长整型变量,下边还报错,为什么呢?
		//long f = 2147483648;
		//下边不报错
		long g = 2147483647;
	}
	
}

为什么long f = 2147483648;报错,long g = 2147483647;不报错呢?

上边我们写的2、127、256,512都默认为int数据,编译器会自动将int转为其它类型,如下:

byte a = 2;//自动将int数据转为byte变量,如果该数据在byte的范围内则不报错
byte b = 128;//报错了,因为128已经超过byte的最大值

long f = 2147483648;这里报错,2147483648并没有超过long的范围,为什么报错?

虽然2147483648没有超过long的范围但是2147483648超过了int的范围,刚才说了,2147483648默认为int类型的数据,int的最大值为2147483647,所以long f = 2147483648报错,而long g = 2147483647;是正确。

如何给long赋值比2147483647大的数据呢?

我们在数据的后边加大写L或小写l即可,如下:

//2147483648L表示一个长整型数据
long f = 2147483648L;

小于2147483648的数据可以加L或小写l吗?

答案是可以的,建议使用统一使用大写L,因为小写l看起来像数字1。

上面例子中我们将二进制、八进制、十六进制赋值给int数据,但是要注意数据表示的规则,如下:

二进制数在前边加0b或0B,例如:

​ 0b1011,0B100

八进制数在前边加0,例如:

​ 023,012

十六进制数在前边加0x或0X,例如:

​ 0xFF,0x11

十进制数什么都不用加,例如:

​ 99,101

完善上边的程序:

/**
 * Java整型数据类型测试 
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class DataTypeDemo1 {

	public static void main(String[] args) {
		//定义一个byte变量,2在byte的范围内,赋值成功
		byte a = 2;
		//下边的报错,因为128已经超过byte的最大值
		//byte b = 128;
		byte b = 127;
		//定义一个短整型变量,256在short的范围内,赋值成功
		short c = 256;
		//定义一个整型变量
		int d = 512;
		//下边的报错,因为2147483648已经超过int的最大值
		//int e = 2147483648;
		//定义一个长整型变量,下边还报错,为什么呢?末尾加大写L或小写l
		long f = 2147483648L;
		//下边这样复制不报错
		long g = 2147483647;
		//二进制,以0b开头
		int h = 0b10110110;
		//八进制,以0开头
		int i = 0266;
		//十六进制,以0x开头
		int j = 0xB6;
		System.out.println(h);
		System.out.println(i);
		System.out.println(j);
	}
	
}

程序输出:

182
182
182
提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题