public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World"); // 输出 Hello World
}
}
其中第一行包含的信息很少
public class HelloWorld{
}
其实就是定义了这个java文件中之只能存在一个的公共类,“public”在这里的作用就是访问修饰符,是为了标识这个类的访问权限,从其他类中能访问的就是public类型。
第二行需要知道的稍微多一点
public static void main(String[] args) {
}
关于这一行菜鸟教程里有张图有详细注释:
根据Java规范,main
方法的签名必须为public static void main(String[] args)
,否则 JVM 没法运行程序,其中public
是访问修饰符,static
表示该方法属于类本身而不是类的实例,void
表示该方法不返回任何值,main
是该方法的名称,String[] args
表示该方法接收一个字符串数组作为参数。
访问修饰符 public
首先还是上文中出现过的访问修饰符。Java 支持 4 种不同的访问权限。
-
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
-
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
-
public : 对所有类可见。使用对象:类、接口、变量、方法
-
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
关键字 static
然后是关键字static:
在Java的main
方法中,static
关键字是唯一合法的修饰符。但是在其他方法中,可以有其他关键字用于修饰:
static
表示该方法是静态的,属于类本身而不是类的实例。abstract
表示该方法是抽象的,没有实现具体的行为。final
表示该方法是最终的,不能被重写或继承。
public class MyClass {
public static int staticVar = 10; // 静态变量
public static void staticMethod() {
System.out.println("这是一个静态方法");
}
}
在上面的代码中,staticVar
是一个静态变量,属于类本身而不是类的实例,因此可以直接通过类名访问,而不需要创建类的实例。staticMethod
是一个静态方法,也属于类本身,因此可以直接通过类名调用,而不需要创建类的实例。
public abstract class MyAbstractClass {
public abstract void abstractMethod(); // 抽象方法
}
在上面的代码中,MyAbstractClass
是一个抽象类,其中的abstractMethod
是一个抽象方法,没有实现具体的行为。抽象类不能直接被实例化,需要被继承并重写其中的抽象方法才能使用。
public final class MyFinalClass {
private final int finalVar = 10; // 最终变量
public final void finalMethod() {
System.out.println("这是一个最终方法");
}
}
在上面的代码中,MyFinalClass
是一个最终类,其中的finalVar
是一个最终变量,不能被修改。同时,该类中的所有方法都只能是最终方法,不能被重写或继承。
返回类型 void
void在这里起到的作用是规定好了这个类的返回类型,void表示不用返回,也就是后面的代码中没有return语句,除此之外还有int、String、Object等,(其中Object可以返回null)。
方法名 main
这是这个方法的名称。按照Java的规范,main
方法是Java应用程序的入口点。也就是说,当你运行Java程序时,JVM(Java虚拟机)会首先调用这个方法。
接收参数
String[] args
:这是main
方法的参数。这个参数是必需的,它是一个字符串数组,通常用来接收从命令行传递给程序的参数。
当你从命令行运行Java程序时,你可以通过在命令行中提供参数来传递信息给程序。这些参数会被存储在一个字符串数组中,这个数组就是args
。
在对于下面这段代码来说:
public class MyProgram {
public static void main(String[] args) {
// your code here
}
}
可以在命令行中以以下方式运行它并传递参数:
java MyProgram arg1 arg2 arg3
在这个例子中,args
数组将包含三个元素:arg1
、arg2
和arg3
。我们可以在程序中使用这些参数,根据需要处理它们。
需要注意的是,args
数组的长度就是传递给程序的参数数量。第一个参数在数组的索引0中,第二个参数在索引1中,以此类推。所以,如果你想获取第一个参数,可以使用args[0]
,获取第二个参数可以使用args[1]
,以此类推。
知道了这些看起来很麻烦的东西是什么,接下来就可以在方法中实现需要的功能啦