int =100;while(n>100);编译后不报错  那为什么 for(;;){};编译后就会报错呢 不都相当于while(true)的循环吗

解决方案 »

  1.   

    以下两个都不报错。
    1) 
    int n=100; while(n>100);  //LZ的括号是中文的
     
    2)      
            for( ;;){
            
            }
      

  2.   

    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";
    }
    }
      

  3.   

    为什么限定词不直接用true就不会报错呢
      

  4.   

    因为n是变量,所以变量的值不是固定的。
    换成常量一样报错。final int n = 100;
      

  5.   

    这个代码 中   public static void main(String []args){
                 int n=100;
                 while(n>100);
                 Sysytem.out.println(n);
                }不会出现编译错误
                  但是把 while换成 for(;;)循环就会在System输出的时候出现编译错误
                   求教区别  两个不都是死循环吗
      

  6.   

    Sysytem.out.println(n); 单词打错了吧System
      

  7.   

    int =100;while(n>100)这个就没进入到循环中来。而for(;;){}是个死循环,都没有终止的条件或者break;
      

  8.   

    你的这个问题很好 我也上机调试了
    发现
     while(true){} 和for(;;){}是等价的 
    而while(n>99){} 和for(;n>99;){}是一样的
    我想这个应该和内存有点关系 因为循环里面带了一个变量 导致了程序的不确定性
    Java运行时 先将变量存在栈里,在运行带n的循环方法时需从栈里把变量取出进行运算 经运算后才发现它是死循环
    而前一种没有变量 JVM对它可以直接扫描 鉴定它是死循环 后面的代码无法执行 故这种程序不能够结束 所以报错
    这就好比一个得病的人 前一种是不知道病情,过了一段时间病症发作了才知道
    而后者是提前知道了病情 所以它要吃药 打针,必须在发作之前治好。
    说的有些啰嗦 不知道听懂没?
      

  9.   

    for(;;){}
    这样写是不会报错的。。