如果我写了一个类,这个类调用了基础类(类库)中的一些方法,
在主方法中new他,是不是必须写构造函数。
如下,列出某个目录下的文件和文件夹:
[code=Jav]import java.io.* ; 
public class MyFile { 
  File f1=new File("C:/Windows"); 
  File file[]=f1.listFiles(); 
  MyFile(){ 
  String s1=f1.getName(); 
  boolean s2=f1.canRead(); 
  long s3=f1.length(); 
  int j=0; 
  System.out.println (s1+"是可读的吗?"+s2); 
  System.out.println (s1+"的长度:"+s3); 
  System.out.println (s1+"下的目录有:"); 
  for(int i=0;i <file.length;i++){ 
  if(file[i].isDirectory()) { 
  System.out.print(file[i].getName()+"  "); 
      j++; 
    if(j%8==0) { System.out.print("\n"); } 
  } 
  } 
  System.out.println ("\n"+s1+"下的文件有:"); 
  for(int i=0;i <file.length;i++){ 
  if(file[i].isFile()) { 
  System.out.print(file[i].getName()+"  "); 
      j++; 
    if(j%6==0) { System.out.print("\n"); } 
  } 
  } 

public static void main(String[] args){ 
new MyFile(); 

}[/code]
不要构造函数,是会报错的  
还有,在JSP中
可以不需要像这样赋值,直接可以out.print出来
  String s1=f1.getName();
  boolean s2=f1.canRead();
  long s3=f1.length();
能解释一下吗?

解决方案 »

  1.   

    [code=Jav]
    //怎么格式不能用了?
    [/code]
      

  2.   

    你上面的程序没有错。
    main方法中的代码,是用户从命令行执行这个类的时候执行的,你的main方法中新建了本类的一个对象。
    new MyFile()这一条指令执行的时候,JVM会新建一个MyFile对象,初始化其f1和file属性,然后执行MyFile()这个构建器,这样你就可以看到写在构建器中代码的执行效果了。
    不一定非要这样写,但你这样写是没错的。至于JSP中,可能会用其他标签实例化对象,对象不实例化不能访问的。
    out对象特殊一点,是JSP引擎准备好了,直接可用。
      

  3.   

    import java.io.* ;
    public class MyFile { 
      File f1=new File("C:/Windows");
      File file[]=f1.listFiles();
      String s1=f1.getName();
      boolean s2=f1.canRead();
      long s3=f1.length();
      int j=0;
      System.out.println (s1+"是可读的吗?"+s2);
      System.out.println (s1+"的长度:"+s3); 
      System.out.println (s1+"下的目录有:"); 
       for(int i=0;i<file.length;i++){
       if(file[i].isDirectory()) {
       System.out.print(file[i].getName()+"  ");
           j++;
         if(j%8==0) { System.out.print("\n"); }
       }
       }
       System.out.println ("\n"+s1+"下的文件有:"); 
       for(int i=0;i<file.length;i++){
       if(file[i].isFile()) {
       System.out.print(file[i].getName()+"  ");
           j++;
         if(j%6==0) { System.out.print("\n"); }
       }
       } 
      
     public static void main(String[] args){
     new MyFile();
     }
    }
    那为什么这样就报错了呢
    难道是因为无法初始化这些变量
      

  4.   

    谢谢magong,也祝你技术越来越好