详细解释Java main
方法中每个关键字的含义。
public static void main(String[] args) {
System.out.println();
}
public:
这是一个访问修饰符,表示该方法是公开的,可以被任何其他类访问。在Java中,main方法必须是public的,因为它是程序的入口点,需要从JVM(Java虚拟机)外部被调用。
static:
表明该方法是静态的,意味着它可以在没有创建类的实例的情况下被调用。main方法必须是静态的,因为当程序开始执行时,JVM还没有创建任何对象,所以它需要一个静态入口点来启动程序。
void:
这表示main方法没有返回值。main方法不需要返回任何内容给JVM或任何其他调用者,因为它本身就是程序的开始。
main:
这是一个特殊的方法名,Java程序从这里开始执行。JVM查找具有这个确切名称和签名的方法来启动Java应用程序。
(String[] args):
这是main方法的参数,它是一个字符串数组。这个数组可以包含从命令行传递给Java程序的参数。例如,如果你在运行程序时使用了java MyProgram arg1 arg2这样的命令,那么args数组就会包含[“arg1”, “arg2”]。这个参数允许程序与外部世界进行交互,尽管在这个特定的例子中,它没有被使用。
{ 和 }:
这对大括号定义了main方法的开始和结束。在它们之间,你可以放置任何数量的Java语句,这些语句会在程序启动时按顺序执行。
System.out.println();:
这是一个Java语句,用于在控制台(或称为标准输出)上打印信息。然而,在这个例子中,println方法被调用了但没有传递任何参数,所以它实际上不会打印任何内容。如果你想要打印一些文本,你应该在括号内传递一个字符串参数,如
System.out.println("Hello, World!");
总结来说,这个main方法是Java程序的入口点,尽管它只包含了一个打印语句,但它展示了Java程序的基本结构。
那么什么是System?
在Java中,System是一个预定义的类,它属于java.lang包,因此无需显式导入即可在程序中直接使用。System类提供了一系列用于访问系统资源的静态方法和变量,这些资源包括标准输入、输出和错误流,以及访问环境变量和加载库的方法。
System类的主要特点和用途包括:
- 标准输入输出流:
System.out:
用于打印输出到标准输出设备(通常是控制台)。
System.err:
用于打印错误消息到标准错误设备(也是控制台,但通常用于区分正常输出和错误信息)。
System.in:
用于从标准输入设备(如键盘)读取数据。 - 环境变量和属性:
getenv():
用于获取指定的环境变量值或所有环境变量的不可修改映射。
getProperty(String key):
获取系统属性的值。
getProperty(String key, String def):
获取系统属性的值,如果属性不存在,则返回默认值。 - 系统资源管理和控制:
currentTimeMillis():
返回自1970年1月1日00:00:00 GMT以来的毫秒数,常用于计算程序或循环使用的时间。
exit(int status):
终止当前运行的Java虚拟机。参数status用于表示退出状态;按照惯例,非零值表示异常终止。
gc():
请求垃圾收集器运行,但不保证立即执行。 - 其他静态方法:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length):虽然不是System类特有的,但由于其用途广泛,经常与System类一起提及。这是一个静态方法,用于在数组之间进行复制。
注意事项:
System类的构造方法是私有的,因此无法创建System类的对象,即无法实例化该类。
System类内部的方法和变量都是静态的,因此可以直接通过类名来调用它们,而无需创建对象。
虽然System.gc()方法可以请求垃圾收集器运行,但具体的垃圾收集时间和行为是由JVM的垃圾收集器算法和当前系统的执行状况决定的,因此不保证立即执行。
在实际编程中,应避免在程序退出前频繁调用System.exit(),因为这会打断正常的程序流程和资源释放过程。
总的来说,System类是Java中一个非常重要的类,它提供了与系统资源交互的便捷方式,是Java程序员在日常开发中经常使用的工具之一。