1。下面这个代码觉得不能用,因为它是错的:
int j = 0;
for (int i = 0; i < 100; i++)
j = j++;
System.out.println(j);
最终结果是0而不是100
你不能用j=j++,而应该用j++就好了,但是你用j=j+2不会出项问题,原因在于++操作符
2。下面这个循环永远不会结束
public class NotEndedLoop {
public static final int fromEND = Integer.MAX_VALUE;
public static final int fromSTART = END - 50;
public static void main(String[] args) {
int count = 0;
for (int i = fromSTART; i <= fromEND; i++)
count++;
System.out.println(count);
}
}
原因在于 ,所有的int 变量都是小于或等于Integer.MAX_VALUE 的。当i 达到Integer.MAX_VALUE,并且再次被执增量操作时,它就有绕回到了Integer.MIN_VALUE。
3.下面的循环也会永远执行下去
double d=Double.POSITIVE_INFINITY;
while(d==d+1)
System.out.println("hello");
或者
double d=Double.NEGATIVE_INFINITY;
while(d==d+1)
System.out.println("hello");
原因吗,可能就是正无穷+常数还是正无穷诸如此类
其实呀,很大的浮点数就可以了,不一定需要无穷大哦:将一个很小的浮点数加到一个很大的浮点数上时,
将不会改变大的浮点数的值。看下面例子也会永远循环执行下去
double d=1.0e40;;
while(d==d+1)
System.out.println("hello");
当然对实际的数字来说这是不
成立的。我们应该记住二进制浮点算术只是对实际算术的一种近
4 还有更加神奇的循环while(i!=i)
double x=0./0;//x需要声明为double,不可是int类型
System.out.println(x==x);
注意:上面这个程序是可以运行的,而不是报错!
5.i!=i+0为true 这里i不允许用double怎么办
对了,可以用String类型,使得 + 被重载为连接