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

wbo112 2012-09-08 02:51:13

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 就报错
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
张自强 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 1 楼 的回复:

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

+1,其他回答貌似都跑题了
[/Quote]

就这个答案了
为啥呢 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

因为main方法是静态的。静态方法只能引用静态成员。
[/Quote]
+1,其他回答貌似都跑题了
nmyangym 2012-09-08
  • 打赏
  • 举报
回复
如果不设成static,那就意味着变量必须由对象引用.
楼主在main方法里已经创建了类CreateFile 的对象cf, 在不设成static的情况下,可以通过对象引用. 做如下修改:

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

}
zhaoming262350 2012-09-08
  • 打赏
  • 举报
回复
静态的变量直接可以通过类名来调用,
shenhua 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
因为main方法是静态的。静态方法只能引用静态成员。
[/Quote]
嗯。就因为你的这三个参数在main方法里使用,因为main方法是静态的,那么它们必须也是静态的。
如果你不想这样的话,可以把测试的东西单独封装来调用。如

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


不过在现实应用中一般都是使用构造方法把这些参数传过来调用方法的。
leyestd 2012-09-08
  • 打赏
  • 举报
回复
所有对象中的静态变量都是相同的,就是只实例化一次
jiuchengyi 2012-09-08
  • 打赏
  • 举报
回复
静态变量用于计数,或者为了节省空间
结贴是美德 2012-09-08
  • 打赏
  • 举报
回复
因为main方法是静态的。静态方法只能引用静态成员。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧