JAVA中public class 和class的区别
如果不想看分析的部分可以直接翻到最后看结论
1.public class
我们先来看下public class
public class Test{
public static void main(String[] args){
System.out.pringln("这是一个public class");
}
}
这种可以说是最普通的一种类,也是我们最常见的一种类。
当我们用javac命令去编译的时候,假如类名与文件名不一致,则会报错。
我将上面的java文件命名为Tewt.java
在cmd中运行如下命令
javac Tewt.java
果不其然,报错了
错误提示为 类 Test 是公共的, 应在名为 Test.java 的文件中声明
当我们把java文件改为Test.java时
再运行一次javac命令
javac Test.java
这次并没有报任何错误,并且在文件夹中多了一个Test.class文件
这说明了一个问题:
public class的类名必须要和java文件名一致,否则无法通过编译。
因此可以推出一个java文件只能有一个public class。
否则,如果一个java文件有两个public class的话,那么文件名用其中一个类名,编译时就会报另一个类名的错。
2.class
再来看下没有public的class
我把Test.java修改成如下
class A{}
class B{}
class C{}
class D{}
javac以下
javac Test.java
您猜怎么着!编译出了4个class文件
这说明了另外一个问题:
没有public修饰的class,名字可以不和文件名一致;
一个java文件可以包含多个class,但是public class只能有一个,当然也可以没有public class;
每个类在编译后都会生成一个class文件
3.总结
1.一个java文件可以没有public修饰的类。但如果有的话,只能有一个,并且文件名需要和类名一致。
2.一个java文件可以有多个类,编译后每个类都会生成一个class文件,使用术语来说就是字节码文件。
3.下面是补充内容,如果初学阶段不知道什么意思可以不用理解,学到后面自然会知道。
1.字节码文件是由JVM(java虚拟机)编译java文件而来,里面是一些可以由CPU直接识别的二进制的机器语言。
2. 我们都说JAVA具有很好的移植性,跨平台能力比较强,这正是由于JVM把JAVA文件编译成class文件。对于源代码来说,无论什么操作平台(系统,比如windows,linux,unix),只要装上了JRE(Java Runtime Environment,java运行环境),就能运行java文件。
好了,这就是今天份public class和class的区别。