概念
Java Integer的取值范围是:
Integer类取值和int类型取值一致,取值范围是从 -2147483648 至 2147483647 。
溢出说明
二分查找中通常使用查找mid的计算方式
- 1.直接left和right相加计算,会造成数值越界
int mid = (left + right) / 2;
- 2.采用left加 (right - left)/ 2
int mid = left + (right - left) / 2;
数学数轴思想演示
图中第二条线段标记时,10+6会超过线段总长度限制,反应到程序中则会计算错误。
代码演示
int left = Integer.MAX_VALUE;//2147483647
int right = Integer.MAX_VALUE;//2147483647
System.out.println((left + right)/2); //输出: -1
System.out.println((l + (right - left) / 2));
思考
为什么程序中整数会有最大值?