我们知道,在Java中,变量有两种类型,一种是原始类型,一种是引用类型。
原始类型一共有8种,它们分别是char,boolean,byte,short,int,long,float,double。在Java API中,有它们对应的包装类,分别是(首字母大写)Character,Boolean,Byte,Short,Integer,Long,Float,Double(char,int的变化稍微大点)。
JAVA JVM对于不同的原始类型会分配不同的存储空间,具体分配如下:
byte : 1个字节 8位 最大值: 127 (有符号)
short : 2个字节 16位 32767
int : 4个字节 32位 2147483647
long: 8个字节 64位 9223372036854775807
float: 4个字节 32位 3.4028235E38
double:8个字节 64位 1.7976931348623157E308
类型转换问题:
类型转换分为强制类型转换和隐式类型转换。
比如int a = Byte.MAX_VALUE + 1; //隐式转换
byte a = (byte) (Byte.MAX_VALUE + 1); //强制转换
溢出问题:
int value = Integer.MAX_VALUE + 1;
System.out.println(value); //输出-2147483648
因为有符号int类型最大能表示到2147483647,所以如果再加1则会溢出,然后会变成最小值
(-2147483648~2147483647)