解析java中的main方法
1.一个java源文件(.java文件)可以有多个class类
1.1 分析
例如下面代码编译时不会报错,只不过编译后会生成多个对应的class类文件
其中有多少个类就生成class类文件
1.2 示例代码
class B{
}
public class Practice {
public static void main(String[] args) {
System.out.println("main方法的一些理解");
}
}
class A{
}
class C{
}
class D{
}
//编译后,应该会生成A、B、C、D、Practice这五个class文件
1.3 编译后的效果截图
2.一个java源文件有且只能有一个public class
2.1 分析
原因:如果类被public修饰,编译器会去判断public class修饰的类名是否与java文件名中的类名部分保持一致,
而若有两个public修饰的类,编译器就不知道听谁的了
因此一个java文件有且只能有一个public class修饰的类
2.2 示例代码
class B{
}
public class Practice {
public static void main(String[] args) {
System.out.println("main方法的一些理解");
}
}
public class F{
}
class A{
}
class C{
}
class D{
}
2.3 示例代码运行截图
3.在一个java源文件里面多个类都可以有自己的main方法,通过java 类名的方式可以进行访问
3.1 分析
在运行阶段,java.exe程序本质上是对.class文件去进行操作,并且是通过class的名字去找到里面的main方法去进行操作,如果操作的class文件没有main方法,那会给出提示,说该类找不出main方法,请将main方法定义成…
总结:java.exe文件本质上去对字节码文件进行相应的操作,并且只能运行带有main方法的class类,没有就会报错
java.exe去执行字节码文件底层是jvm去自动调用里面的字节码文件的main方法,若没有,肯定会报错的
3.2 示例代码
class B{
public static void main(String[] args) {
System.out.println("这是B类中的方法");
}
}
public class Practice {
public static void main(String[] args) {
System.out.println("main方法的一些理解");
}
}
class A{
public static void main(String[] args) {
System.out.println("这是A类中的方法");
}
}
class C{
public static void main(String[] args) {
System.out.println("这是C类中的方法");
}
}
class D{
}
3.3 示例代码运行截图
4.public class类中的main方法必须按照public static void main(String[] args){}格式来吗
4.1 分析
是的,因为只有这样,jvm才能正常自动调用它,我们唯一可以更改的地方是args,因为这是形参,又是标识符,我们可以自己定义,但是不建议自己定义,因为业内默认就是写成args了
4.2 示例代码
class B{
public static void main(String[] args) {
System.out.println("这是B类中的方法");
}
}
public class Practice {
public static void main(String[] arguments) {
//可以看到我改了形参,但是程序还是可以正常运行的
System.out.println("main方法的一些理解");
}
}
class A{
public static void main(String[] args) {
System.out.println("这是A类中的方法");
}
}
class C{
public static void main(String[] args) {
System.out.println("这是C类中的方法");
}
}
class D{
}