共计 1622 个字符,预计需要花费 5 分钟才能阅读完成。
我们来编写第一个 Java 程序。
打开文本编辑器,输入以下代码:
public class Hello {public static void main(String[] args) {System.out.println("Hello, world!");
}
}
在一个 Java 程序中,你总能找到一个类似:
public class Hello {...}
的定义,这个定义被称为 class(类),这里的类名是 Hello
,大小写敏感,class
用来定义一个类,public
表示这个类是公开的,public
、class
都是 Java 的关键字,必须小写,Hello
是类的名字,按照习惯,首字母 H
要大写。而花括号 {}
中间则是类的定义。
注意到类的定义中,我们定义了一个名为 main
的方法:
public static void main(String[] args) {...}
方法是可执行的代码块,一个方法除了方法名 main
,还有用()
括起来的方法参数,这里的 main
方法有一个参数,参数类型是 String[]
,参数名是args
,public
、static
用来修饰方法,这里表示它是一个公开的静态方法,void
是方法的返回类型,而花括号 {}
中间的就是方法的代码。
方法的代码每一行用 ;
结束,这里只有一行代码,就是:
System.out.println("Hello, world!");
它用来打印一个字符串到屏幕上。
Java 规定,某个类定义的 public static void main(String[] args)
是 Java 程序的固定入口方法,因此,Java 程序总是从 main
方法开始执行。
注意到 Java 源码的缩进不是必须的,但是用缩进后,格式好看,很容易看出代码块的开始和结束,缩进一般是 4 个空格或者一个 tab。
最后,当我们把代码保存为文件时,文件名必须是 Hello.java
,而且文件名也要注意大小写,因为要和我们定义的类名Hello
完全保持一致。
如何运行 Java 程序
Java 源码本质上是一个文本文件,我们需要先用 javac
把Hello.java
编译成字节码文件 Hello.class
,然后,用java
命令执行这个字节码文件:
┌──────────────────┐
│ Hello.java │◀── source code
└──────────────────┘
│ compile
▼
┌──────────────────┐
│ Hello.class │◀── byte code
└──────────────────┘
│ execute
▼
┌──────────────────┐
│ Run on JVM │
└──────────────────┘
因此,可执行文件 javac
是编译器,而可执行文件 java
就是虚拟机。
第一步,在保存 Hello.java
的目录下执行命令javac Hello.java
:
$ javac Hello.java
如果源代码无误,上述命令不会有任何输出,而当前目录下会产生一个 Hello.class
文件:
$ ls
Hello.class Hello.java
第二步,执行Hello.class
,使用命令java Hello
:
$ java Hello
Hello, world!
注意:给虚拟机传递的参数 Hello
是我们定义的类名,虚拟机自动查找对应的 class 文件并执行。
有一些童鞋可能知道,直接运行 java Hello.java
也是可以的:
$ java Hello.java
Hello, world!
这是 Java 11 新增的一个功能,它可以直接运行一个单文件源码!
需要注意的是,在实际项目中,单个不依赖第三方库的 Java 源码是非常罕见的,所以,绝大多数情况下,我们无法直接运行一个 Java 源码文件,原因是它需要依赖其他的库。
小结
一个 Java 源码只能定义一个 public
类型的 class,并且 class 名称和文件名要完全一致;
使用 javac
可以将 .java
源码编译成 .class
字节码;
使用 java
可以运行一个已编译的 Java 程序,参数是类名。