Day1
下载Java 11后完成了IDEA配置以及第一条hello world
Java 工作方式
我们编写源文件.java, 后由编译器(类似IDEA)来运行源代码,输出到Java Virtual Machine(JVM)内,即输出.
Java 程序结构
源文件(.java)带有类的定义,类存于源文件sourcefile内,方法method存在类内,语句statement存在方法中
- 源文件带有类的定义,为java扩展名的文件
- 类表示程序的一个组件,内容在花括号内
- 方法为可执行的指令,存在类内,由分号分开
- 语句是在方法内的,可执行的指令
Main 方法以及code解析
// Code for today
public class Day1 {
public static void main(String[] args){
System.out.println("Star Platinum");
System.out.println("The world!");
}
}
Day1代表了我的类的名字, 此类中包含了main方法
Main方法
不论程序内含多少个类,程序必须由main方法开始, 且main必须声明为
public static void main(String[] args){ ... }
为什么是public
public声明可被任何方法或变量使用,即java可从此类以外的地方来访问
Java运行时首先创建一个JVM进程,JVM启动进程来执行main方法, 于是便需要外部访问的权限,于是只能public
为什么是static
被static修饰的变量为静态变量,修饰的方法为静态方法,static方法属于类,non-static method需要创建实例来调用,而static方法不属于某个对象,可以直接通过类名调动。
所以main方法内使用的是static声明,因在JVM调用main方法时不用实例化,只用初始化main的所在类,通过类名.main来调用main方法
为什么是void
在C语言内,来自main的返回值代表了停止程序process exit code,而java是由c语言发展而来的,所以return main的值很有可能也代表了停止程序
而在java内,main的结束并不代表程序的结束,许多java程序会有一个很短的主线程,但生成许多长期的后台进程,于是retrun main便有可能传达一个停止程序的意思。因此将main声为void是最好的
为什么是main
main的名称不变是因为JVM的将以main作为程序的起点并查询。任何其他的线程均将由main方法作为初始线程来启动
为什么是String[] args
main中的String[] args 是用于接收命令行的配置并运行在程序内的。接收的形式为array of Strings.
public class Echo {
public static void main (String[] args) {
for (String s: args) {
System.out.println(s);
}
}
}
以上代码,当用户调用时传入Drink Hot Java参数,便会有以下输出
//此为cmd
java Echo Drink Hot Java
Drink
Hot
Java
也就是说,main将用String类型接受args名字的参数,然后运行在程序内
References
Oracle CMD args
Oracle main specification
leizhimin
知乎专栏main详解