在JAVA中基本类型的取值范围:byte的取值范围为-128-127,占用1个字节(-2^7- 2 ^7 -1); short的取值范围为-32768- 32767,占用2个字节(-2 ^15 – 2 ^15-1) ;int的取值范围为(-2147483648-2147483647),占用4个字节(-2 ^31–2 ^31-1) ;long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2 ^63 --2 ^63-1);
在一般平时的编程计算中不会出现数值溢出的问题,但偶尔处理特别大的数据时可能会碰到数值溢出情况,即变量存储的最大值小于其本身值;计算机在存储数据时是按照二进制形式存储的,当存储值超过时,其高位二进制数会自动丢失,所以要判断有没有数值溢出只需判断存储前后的值相不相同即可;
例题:
将给出的整数x翻转。
例1:x=123,返回321
例2:x=-123,返回-321
当存储10000000003翻转时会超过最大值,所以需要进行判断;
public int reverse (int x) {
// write code here
int val=0;
while(x!=0){
int last=x%10;
int newval=10*val+last;
if((newval-last)/10!=val) { //当不相等时,即发生了数据溢出,返回0;
return 0;
}
val=newval;
x=x/10;
}
return val;
}
继续加油,哈哈!