当前位置:编程学习 > JAVA >>

菜鸟自学求教while

int =100;while(n>100);编译后不报错  那为什么 for(;;){};编译后就会报错呢 不都相当于while(true)的循环吗 --------------------编程问答-------------------- 说清楚点 --------------------编程问答-------------------- 以下两个都不报错。
1) 
int n=100; while(n>100);  //LZ的括号是中文的
 
2)      
        for( ;;){
        
        } --------------------编程问答-------------------- int =100;while(n>100);
这种不报错是因为 while里面的限定词不是直接用true。
for( ;;){
 
}
这种报错是因为,这已经标志的是死循环,所以后面的代码执行不到,会报错。除非有退出标志,比如break,return等语句。

public class Test {
public static void main(String[] args) {
int n = 100;
while(n>100);//换成true 一样报错。
String hello = "hello";
for( ;;){
 break; //加break就不会报错。
}
String hello1 = "hello";
}
}
--------------------编程问答-------------------- 为什么限定词不直接用true就不会报错呢 --------------------编程问答-------------------- 因为n是变量,所以变量的值不是固定的。
换成常量一样报错。final int n = 100; --------------------编程问答-------------------- 这个代码 中   public static void main(String []args){
             int n=100;
             while(n>100);
             Sysytem.out.println(n);
            }不会出现编译错误
              但是把 while换成 for(;;)循环就会在System输出的时候出现编译错误
               求教区别  两个不都是死循环吗 --------------------编程问答-------------------- Sysytem.out.println(n); 单词打错了吧System --------------------编程问答-------------------- int =100;while(n>100)这个就没进入到循环中来。而for(;;){}是个死循环,都没有终止的条件或者break; --------------------编程问答-------------------- 你的这个问题很好 我也上机调试了
发现
 while(true){} 和for(;;){}是等价的 
而while(n>99){} 和for(;n>99;){}是一样的
我想这个应该和内存有点关系 因为循环里面带了一个变量 导致了程序的不确定性
Java运行时 先将变量存在栈里,在运行带n的循环方法时需从栈里把变量取出进行运算 经运算后才发现它是死循环
而前一种没有变量 JVM对它可以直接扫描 鉴定它是死循环 后面的代码无法执行 故这种程序不能够结束 所以报错
这就好比一个得病的人 前一种是不知道病情,过了一段时间病症发作了才知道
而后者是提前知道了病情 所以它要吃药 打针,必须在发作之前治好。
说的有些啰嗦 不知道听懂没?
--------------------编程问答-------------------- for(;;){}
这样写是不会报错的。。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,