基本数据类型范围
- char:占2个字节,采用Unicode编码【Unicode编码的前128字节编码与ASCII兼容】,字符的存储范围在\u0000~\uFFFF【0到65535】
包装类型:Character
最小值:Character.MIN_VALUE=’\u0000’
最大值:Character.MAX_VALUE=’\uFFFF’ - byte:占1个字符,范围为:-128~127,包装类型为:Byte
最小值:Byte.MIN_VALUE= -128
最大值:Byte.MAX_VALUE=127 - short :占2个字节,包装类:Short
最小值:Short.MIN_VALUE=-32768 (-2的15次方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1) - int :占4个字节,包装类:Integer,享元模式在常量池中初始化了-128–127之间的整数对象
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1) - long: 占8个字节,包装类:java.lang.Long
- float:占4个字节,包装类:java.lang.Float
- double:占8个字节,包装类:java.lang.Double
public static void main(String[] args) {
System.out.println(Integer.valueOf(Character.MIN_VALUE)); //0
System.out.println(Integer.valueOf(Character.MAX_VALUE)); //65535
System.out.println(Byte.MIN_VALUE); //-128
System.out.println(Byte.MAX_VALUE); //127
System.out.println(Short.MAX_VALUE); //32767
System.out.println(Short.MIN_VALUE); //-327678
System.out.println(Integer.MAX_VALUE + 1 == Integer.MIN_VALUE); // true
System.out.println(Integer.MIN_VALUE - 1 == Integer.MAX_VALUE); //true
System.out.println(Long.MAX_VALUE + 1 == Long.MIN_VALUE);//true
System.out.println(Long.MIN_VALUE - 1 == Long.MAX_VALUE);//true
System.out.println(Long.valueOf(Integer.MAX_VALUE + 1)); //-2147483648
}
存在i+1<i的数吗?
如果i为int类型,当i为int类型的最大值时,i+1就溢出变为负数了,此时i+1>i
System.out.println(Integer.MAX_VALUE + 1 > Integer.MAX_VALUE); //false
整数强制转换之数据溢出
- 当一个byte类型的变量被赋值超出byte类型的范围时,编译会报错,除非被强制转换为byte类型
原因: