如:
for(i=0;i<100;i++)
{
  File f = new File();
  f.deleteOnExit();
}
这中间难道是创建了100个f对象?谁能说一下他循环的时候的创建机制?

解决方案 »

  1.   

    import java.io.*;
    class B {
      
      
           public static void main(String[] args) {        
            for(int i=0;i<100;i++)
           {
              File f = new File("f:\\a.txt");
              //f.deleteOnExit();
           }   }}
    反编译结果:public static void main(java.lang.String[]);
      Code:
       0:   iconst_0
       1:   istore_1
       2:   iload_1
       3:   bipush  100
       5:   if_icmpge       28
       8:   new     #2; //class java/io/File
       11:  dup
       12:  ldc     #3; //String f:\a.txt
       14:  invokespecial   #4; //Method java/io/File."<init>":(Ljava/lang/String;)V   17:  astore_2
       18:  aload_2
       19:  invokevirtual   #5; //Method java/io/File.deleteOnExit:()V
       22:  iinc    1, 1
       25:  goto    2
       28:  return
    每次循环都NEW了一个新对象,17:  astore_2表明,引用变量f每一次指向这个新对象