如果有,请解释一下...
为了回答这个问题,让我们看一个例子:
创建一个名为 Sample.java 的文件。
class A
{
public static void main(String args[])
{
String str[] = {""};
System.out.println("hi");
B.main(str);
}
}
class B
{
public static void main(String args[])
{
System.out.println("hello");
}
}
现在您需要编译它,使用命令javac Sample.java
,然后运行java A
,就会输出结果
hi
hello
java B
,则输出将为hello
。请注意,这些类都没有被标记为public
,因此它们具有默认访问权限。没有任何公共类的文件没有文件命名限制。你的Java文件名应该始终反映在该文件中定义的公共类。否则,你将会得到一个编译器错误。例如,test.java:
public class Foo {}
尝试编译这个代码会出现以下错误:
[steven@scstop:~]% javac test.java
test.java:1: class Foo is public, should be declared in a file named Foo.java
public class Foo {
^
1 error
因此,您必须确保文件名与公共类名匹配,这似乎使您的问题无意义。或者我没有理解你的问题...花些时间解释一下你实际想要实现什么,这将有助于提出更有效的问题 :)
TestFileName.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,World\n");
}
}
编译中:javac TestFileName.java
错误:
TestFileName.java:1: class HelloWorld is public, should be declared in a file named HelloWorld.java
public class HelloWorld
^
1 error
是的,我们可以使用与类名不同的名称编译Java文件,前提是该文件中不应有任何公共类。
如果文件中有任何公共类,则必须将该名称作为文件名。但是,如果您的类不包含任何公共类,则可以为您的类赋予任何名称。
请参考以下示例以使其更加清晰:
文件名:sample.java
class A
{
public static void main(String args[])
{
System.out.println("hi in Class A");
}
}
class B
{
public static void main(String args[])
{
System.out.println("hello in class B");
}
}
然后使用以下命令(Windows系统)编译它:javac sample.java
接着运行它:java A
输出结果为:在A类中打印“hi”
再运行它:java B
输出结果为:在B类中打印“hello”
请确认并检查。
文件名必须与公共类的名称相同。这是非常好的事情。只要它们不是public,可以在同一文件中有次要类。它们仍然可以是“默认”的,因此其他包中的类仍然可以使用它们。
大多数情况下不应这样做。Java关于类和包的命名模式是其较大优势之一--使程序员的工作更轻松,而不需要额外付出成本。
您可以使用Java编译API并编译任何您想要的Java源代码,该源代码不需要来自文件,也可以来自具有无关名称的文件。这取决于您希望开发程序时有多难理解。;)
如果这个类是公共的,那么你不需要将文件名命名为与其类名相同。尽管将文件名与类名相同是一个好习惯。
编译器会成功编译你的文件并生成一个 .class 文件。现在,在运行时,你需要向 JVM 提供类名,因此你必须记住具有 main 方法的类的名称。如果你将文件名和类名都保持相同,那么就容易记住编译后的 .class 文件的名称。
for example:
file Dummy.java
class Dummy
{
public static void main(String args[])
{
System.out.println("This is Dummy class running");
}
}
to run the above code we will use :
Javac Dummy.java // to compile
Java Dummy //to run
example:
file Dummy.java
class Diff
{
public static void main(String args[])
{
System.out.println("This is Diff class running");
}
}
to run the above code we will use :
Javac Dummy.java // to compile
Java Diff //to run
是的,我们可以使用与类不同的名称编译Java文件,前提是该文件中不应有任何公共类。
如果文件中有任何公共类,则在这种情况下,您必须将其名称作为文件名。但是,如果您的类不包含任何公共类,则可以为您的类指定任何名称。
请参考以下示例以使其更清晰:
文件名:example.java
class A
{
public static void main(String args[])
{
System.out.println("You are in Class A");
}
}
class B
{
public static void main(String args[])
{
System.out.println("You are in class B");
}
}
然后使用以下命令进行编译:javac example.java
然后运行它:java A
output : you are in Class A
然后运行它:java B
output : you are in class B
按照惯例,主类的名称应与保存程序的文件名相匹配。您还应确保文件名的大小写与类名匹配。
文件名对应类名的惯例可能看起来是武断的。然而,这个惯例使得维护和组织程序更容易。此外,在某些情况下,这是必需的。