在Java里,它的基本数据类型值域和行为都是由语言自己定义的,什么意思呢,在C或者C++中,基本整数类型int的值域是由它的占位宽度决定,而它的占位宽度则是由目标平台决定的。一般来说C或者C++中int的占位宽由它编译器根据目标平台的字长来决定,这就意味着不同的平台编译器的同一个C程序在运行时可能出现不同的行为,但是对于Java而言,完全不会出现这种情况
Java里基本类型的字长或值域都是Java语言自己定义的,是固定的,这也是支持Java平台无关性的方式之一,对于整型变量。
byte:byte类型在内存占8位,表示数据范围为:-128 --------- 127
short:short类型在内存占16位,表示范围为:-32768 ---------- 32767
int:int类型在内存占32位,表示范围为:-231---231
long:long类型在内存占64位,表示范围为:-261---261
上述类型的值域不管在什么时候什么系统上都不会变化,不会随着系统的不同而变化,如果声明的类型赋值超过本类型,就会报错。下面是一段测试代码,测试了byte和short的范围,读者也可以自己测试一下,并测试一下int类型和long类型,在Java中整型默认为int类型,在声明long类型的变量赋值时,需要在所赋的值后加上l或者L
public class IntegerTypeTest
{
public static void main(String[] args)
{
//声明一个byte类型的整型变量,最大值为127
byte maxByteValue=127;
//声明一个byte类型的整型变量,最小值为-128;
byte minByteValue=-128;
//byte类型只能在-128-127之间,超过这个范围会报错
//声明一个byte类型整型变量,超过范围,编译时报错
byte exceedByteValue=129;
//声明一个short类型的整型变量,最大值为32767
short maxShortValue=32767;
//声明一个short类型的整型变量,最小值为-128;
short minShortValue=-32768;
//short类型只能在-32768-32767之间,超过这个范围会报错
//声明一个short类型整型变量,超过范围,编译时报错
short exceedShortByte=-32799;
//声明long类型的变量并赋值,只要不超过其值域即可
long longTypeValue=8888888888L
}
}