当你的.java文件中有 public 修饰的类。那么文件名必须跟类名一样。否则就没有限制了。只是,在编译成.class文件时,会将每个class形成一个单独的.class文件。同时,名字跟类名一至。

解决方案 »

  1.   

    回复人: zqhf8(waiwai) 当我新建一个JAVA文件时,我命名为Hello,但我在声明类名时用hello1,照样可以编译啊,就是生成的是hello1.class
      

  2.   

    你可以看一下JAVA虚拟机的规范,那里面说明了为什么文件名要和public class的类名一样。
      

  3.   

    j2nix(爱生活爱星辉) 
    up
      

  4.   

    String a="h",b="w";
    swap(String s1,String s2 ){
      String tmp=s1;
      s1=s2;
      s2=tmp;
    }
    a,b是“h”,"w"的reference,a--〉"h",b->"w";
    进入swap,s1->"h",s2->"w";
    tmp=s1;  tmp->"h"
    s1=s2;   s1-->"w"
    s2=tmp;  s2-->"h"
    退出函数,a,b仍是指向"h","w";
    而对于数组的情况String arr[] ={"h","w"}
    swap(String[] s){
      String tmp=s[0];
      s[0]=s[1];
      s[1]=tmp;
    }
    开始arr存储了数组元素的reference,是一个reference数组,
    函数调用开始,将s指向该reference数组,对s[0]表示第一个reference,s[1]表示第二个,
    tmp=s[0]; //tmp指向数组的第一个元素
    s[0]=s[1];//s[0]指向第二个元素
    s[1]=tmp;//s[1]也指向地一个元素;
    其实改变s也就是改变了arr,arr[0]指向了第二个元素,arr[1]指向了第一个元素
    欢迎楼主多多提问
      

  5.   

    回复人: zqhf8(waiwai) 当我新建一个JAVA文件时,我命名为Hello,但我在声明类名时用hello1,照样可以编译啊,就是生成的是hello1.class
    当你在声明类名时用hello1前加个public试试,thinging in java上说的,一个编辑单元只能有一个
    public class,且这个public class 得和文件名同名,要不过不了编译