2.第一个Java程序

Posted by Shen's Blog on Tuesday, January 3, 2023

2.第一个Java程序

我们来编写第一个Java程序。

打开文本编辑器,输入以下代码:

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

在一个Java程序中,你总能找到一个类似:

public class Hello {
    ...
}

的定义,这个定义被称为class(类),这里的类名是 Hello,大小写敏感,class用来定义一个类,public表示这个类是公开的,publicclass都是Java的关键字,必须小写,Hello是类的名字,按照习惯,首字母 H要大写。而花括号 {}中间则是类的定义。

注意到类的定义中,我们定义了一个名为 main的方法:

    public static void main(String[] args) {
        ...
    }

方法是可执行的代码块,一个方法除了方法名 main,还有用 ()括起来的方法参数,这里的 main方法有一个参数,参数类型是 String[],参数名是 argspublicstatic用来修饰方法,这里表示它是一个公开的静态方法,void是方法的返回类型,而花括号 {}中间的就是方法的代码。

方法的代码每一行用 ;结束,这里只有一行代码,就是:

        System.out.println("Hello, world!");

它用来打印一个字符串到屏幕上。

Java规定,某个类定义的 public static void main(String[] args)是Java程序的固定入口方法,因此,Java程序总是从 main方法开始执行。

注意到Java源码的缩进不是必须的,但是用缩进后,格式好看,很容易看出代码块的开始和结束,缩进一般是4个空格或者一个tab。

最后,当我们把代码保存为文件时,文件名必须是 Hello.java,而且文件名也要注意大小写,因为要和我们定义的类名 Hello完全保持一致。

如何运行Java程序

Java源码本质上是一个文本文件,我们需要先用 javacHello.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程序,参数是类名。