java基础笔记(三)——main方法

1.解析public static void main(String[] args)方法

JVM在运行程序时,会首先查找main()方法作为入口,main是JVM识别的特殊方法名。

public是权限修饰符,表明任何类或对象均可访问此方法。

static表明main()方法是一个静态方法,即方法中的代码是存储在静态存储区的,只有类被加载后,即可使用该方法而不需要实例化对象来访问,可以直接通过类名.main()访问。

字符串数组参数args接收开发人员在命令行状态下与程序交互的代码。

此例为调用main()方法时传递参数的方法:

1 public class Test{
2   public static void main(String[] args){
3     for(int i=0;i<args.length;i++){
4       System.out.println(args[i]);
5     }
6   }
7 }

在控制台下,使用javac Test.java指令编译上述程序,使用java Test arg1 arg2 arg3指令运行程序,程序运行结果为:

arg1

arg2

arg3

注:

(1)不管哪种定义方式,除了不能用abstract关键字修饰,必须保证main()方法的返回值为void,并有static与public关键字修饰。

(2)同一个.java文件中是否可以有多个main()方法?

虽然每个类中都可以定义main()方法,但是只有与文件名相同的用public修饰的类中的main()方法才能作为整个程序的入口方法。

如下例,创建了一个名为Test.java的文件:

 1 class T{
 2     public static void main(String[] args){
 3         System.out.println(“T main”);
 4     }
 5 }
 6 public class Test{
 7     //程序入口函数
 8     public static void main(String[] args){
 9         System.out.println(“Test main”);
10     }
11 }        

程序运行结果为:

Test main

(3)在java语言中,静态块在类被加载时就会被调用,会在main()方法执行之前执行。

1 public class Test{
2   public static void main(String args[]){
3     System.out.println(“Hello World2”);
4   }
5   static{
6     System.out.println(“Hello World1”);
7   }
8 }

程序运行结果:

Hello World1

Hello World2

2.一个Java文件中是否可以定义多个类?

  一个Java文件中可以定义多个类,但是最多只能有一个类被public 修饰,并且这个类的类名与文件名必须相同,若这个文件中没有public的类,则文件名随便是一个类的名字即可。当用javac指令编译这个.java文件时,它会给每一个类生成一个对应的.class文件。

定义Derived.java为:

 1 class Base{
 2   public void print(){
 3     System.out.println(“Base”);
 4   }
 5 }
 6 public class Derived extends Base{
 7   public static void main(String[] a){
 8     Base c=new Derived();
 9     c.print();
10   }
11 }

  使用javac Derived.java指令编译上述代码,会生成两个字节码文件:Base.class与Derived.class,然后使用java Derived指令执行代码,此时,控制台的输出结果为:Base。

原文地址:https://www.cnblogs.com/tendo/p/10318339.html