Java溢出问题
1、JAVA常把整数常量的数据类型均视为int型,因此,如果在程序中使用了超过2147483647这个大小的常量
编译时将发生错误,如:
2、Java提供的整数的最大值与最小值的标识符及常量值。
范例:
public class test3 {
public static void main(String[] args) {
long long_max=java.lang.Long.MAX_VALUE ;//得到长整形的最大值
int int_max=java.lang.Integer.MAX_VALUE;//得到整形的最大值
short short_max=java.lang.Short.MAX_VALUE;//得到短整形的最大值
byte byte_max=java.lang.Byte.MAX_VALUE;//得到BYTE型的最大值
System.out.println("LONG的最大值: "+long_max);
System.out.println("INT的最大值: "+int_max);
System.out.println("SHORT的最大值: "+short_max);
System.out.println("BYTE的最大值: "+byte_max);
long long_min=java.lang.Long .MIN_VALUE;
int int_min=java.lang.Integer.MIN_VALUE;
short short_min=java.lang.Short.MIN_VALUE;
byte byte_min=java.lang.Byte.MIN_VALUE;
System.out.println("LONG的最小值: "+long_min);
System.out.println("INT的最小值: "+int_max);
System.out.println("SHORT的最小值: "+short_max);
System.out.println("BYTE的最小值: "+byte_max);
System.out.println("float_max="+java.lang.Float.MAX_VALUE);
System.out.println("float_min="+java.lang.Float.MIN_VALUE);
System.out.println("double_max="+java.lang.Float.MAX_VALUE);
System.out.println("double_min="+java.lang.Float.MIN_VALUE);
}
}
结果:
LONG的最大值: 9223372036854775807
INT的最大值: 2147483647
SHORT的最大值: 32767
BYTE的最大值: 127
LONG的最小值: -9223372036854775808
INT的最小值: 2147483647
SHORT的最小值: 32767
BYTE的最小值: 127
float_max=3.4028235E38
float_min=1.4E-45
double_max=3.4028235E38
double_min=1.4E-45
数据的溢出
当最大值加上1时,结果反而变成表示范围中的最小值;
当最大值加上2时,结果反而变成表示范围中次小的值;这就hi数据类型的溢出。
如:范例
package C3;
public class test5 {
public static void main(String[] args) {
int x=java.lang.Integer.MAX_VALUE;//声明整型变量X,并赋值为整数最大值,即2147483647
System.out.println("x="+x);
System.out.println("x+1="+(x+1));//发生溢出,运行结果变为-2147483648
System.out.println("x+2="+(x+2));
System.out.println("x+2="+(x+2L));//用强制类型进行了转换,为避免溢出发生,在表达式常量部分2后加L
System.out.println("x+3="+(x+3));
System.out.println("x+3="+(long)x+3);//用强制类型进行了转换,为避免溢出发生,在表达式整数部分X前加上long
}
}
结果:
x=2147