在Java中实现for循环中的新对象

时间:2014-05-07 04:58:41

标签: java

当我编译这段代码时,每件事都没问题

class TreeCutter {
    public static void main ( String [] args ){
         for( int i = 0 ; i < testCaseNum ; i ++ ){
                  TreeCutter TC = new TreeCutter( commandPrompt );
          }
}

但是当我删除大括号并编译我的代码时

class TreeCutter {
    public static void main ( String [] args ){
         for( int i = 0 ; i < testCaseNum ; i ++ )
                  TreeCutter TC = new TreeCutter( commandPrompt );
   }
}

我错了:

main.java:12: not a statement
            TreeCutter TC = new TreeCutter( commandPrompt );
            ^
main.java:12: ';' expected
            TreeCutter TC = new TreeCutter( commandPrompt );
                      ^
2 errors

我想知道这段代码背后发生了什么。

3 个答案:

答案 0 :(得分:2)

您错过了main(){...

的结束括号

答案 1 :(得分:2)

恕我直言,上面的代码将仍然无法编译,即使你为main方法添加了缺少的括号。为了使它编译你需要像这样做

没有FOR循环的支撑

class TreeCutter {
    public static void main ( String [] args ){
         TreeCutter TC ;
         for( int i = 0 ; i < testCaseNum ; i ++ )
                  TC = new TreeCutter( commandPrompt );
    }
}

使用Brace for FOR循环

class TreeCutter {
    public static void main ( String [] args ){

         for( int i = 0 ; i < testCaseNum ; i ++ ) {
                  TreeCutter TC = new TreeCutter( commandPrompt );
         }
    }
}

就GC而言,TC的范围仅适用于for循环。因此,直到你将TC传递出for循环,它将在下一次for循环运行的那一刻符合GC的条件

答案 2 :(得分:1)

缺少main()方法的结束括号。

对于一行代码后的for loop语句,如果您尝试创建对象并将其分配给变量,则不能省略大括号{},以下代码无法编译

 for( int i = 0 ; i < testCaseNum ; i ++ )
     TreeCutter TC = new TreeCutter( commandPrompt );

但可以这样编译;

TreeCutter tc;                        
for( int i = 0 ; i < testCaseNum ; i ++ )
    tc = new TreeCutter( commandPrompt );    

OR

for( int i = 0 ; i < testCaseNum ; i ++ )
    new TreeCutter( commandPrompt );