日期:2014-05-20  浏览次数:20637 次

不太明白,这里为什么要用STATIC
Java code

import java.io.*;

public class CreateFile {
    //private FileInputStream fis =null;
    //private FileOutputStream fos=null;
     static int n=1;       //   1
    private static   File a=new File("D:");     //2
    private File[] list;     
     static int i;       //3
    /**
     * @param args
     */
    public static void main(String[] args) {
        CreateFile cf=new CreateFile();
        cf.find(a, n);
        System.out.println("总文件数是"+i+"个!");
    
    }
    public void find(File a,int n){
        
        if(!a.isDirectory()){
            for(int i=1;i<n;i++){
                System.out.print(" * ");
                
            }
            System.out.println(a.getAbsolutePath());
            i++;
            
        }
            else{
                list=a.listFiles();
                if(list!=null){
                    for(File a1:list)
                        find(a1,n+1);
                }
            
                
            }
    }
}




不太明白,上面1,2,3处为什么一定要定义成static,不然eclipse 就报错

------解决方案--------------------
因为main方法是静态的。静态方法只能引用静态成员。
------解决方案--------------------
静态变量用于计数,或者为了节省空间
------解决方案--------------------
所有对象中的静态变量都是相同的,就是只实例化一次
------解决方案--------------------
探讨
因为main方法是静态的。静态方法只能引用静态成员。

------解决方案--------------------
静态的变量直接可以通过类名来调用,
------解决方案--------------------
如果不设成static,那就意味着变量必须由对象引用. 
楼主在main方法里已经创建了类CreateFile 的对象cf, 在不设成static的情况下,可以通过对象引用. 做如下修改:
Java code

 public static void main(String[] args) {
        CreateFile cf=new CreateFile();
        cf.find(cf.a, cf.n);             //通过对象引用a,n.
        System.out.println("总文件数是"+cf.i+"个!");    //通过对象引用i.
    
    }

------解决方案--------------------
探讨

因为main方法是静态的。静态方法只能引用静态成员。

------解决方案--------------------
探讨
引用:

因为main方法是静态的。静态方法只能引用静态成员。

+1,其他回答貌似都跑题了