1.2.3 运行第一个Java程序
经过一系列的向导指引,虽然成功创建了一个Java项目,但是项目里面空空如也,一行代码都没有。俗话说眼见为实,总得有一个简单的Java程序跑起来,才能算是真正搭建好了开发环境。现在就让我们白手起家,从无到有捣鼓一个Hello World程序出来。
1.2.2小节在向导的指引下,首次打开IDEA便创建了welcome项目,不过这并非常规的项目创建步骤。正常情况下,要通过IDEA的菜单来创建项目,依次选择顶部菜单栏的File→New→Project,弹出如图1-24所示的项目创建窗口。接着一路单击Next按钮,创建名叫Hello的Java项目,然后回到IDEA的主界面,发现界面左边的Project区域内部多了一个Hello文件夹,如图1-28所示。
图1-28 刚创建好的Hello项目
单击Hello文件夹图标左边的箭头,会在下方列出名叫src的文件夹,如图1-29所示。这里便是该项目存放Java代码的大本营。
图1-29 Hello项目展开后的代码结构
右击src文件夹,依次在快捷菜单中选择New→Package,弹出如图1-30所示的创建新包界面。
图1-30 创建新包界面
在界面中部的输入框中填写com.world.hello,表示创建指定名称的代码包,然后单击界面下方的OK按钮。回到主界面,可以看到src文件夹下方多了一级目录com.world.hello,具体如图1-31所示。
图1-31 新包创建之后的Hello项目
右击新增的hello目录,依次在快捷菜单中选择New→Java Class,弹出如图1-32所示的代码创建界面。
图1-32 代码创建界面
同样,在窗口上方的Name输入框中填写Hello,表示创建指定名称的代码文件,然后双击下面的Class选项。此时回到主界面,发现Hello目录下多了一个文件Hello.java,项目层级结构如图1-33所示。
图1-33 代码创建之后的Hello项目
同时,注意到界面右边区域打开了Hello.java,文件内容不多,只有下面的寥寥几行代码:
package com.world.hello; public class Hello { }
毫无疑问,这几行代码太少了,什么都干不了。需要再往里面添加一些内容,以便观察详细的程序运行情况,添加之后的完整代码如下:
package com.world.hello; public class Hello { // 代码添加开始,下面的程序入口将会在控制台打印“Hello World” public static void main(String[] args) { System.out.println("Hello World"); } // 代码添加结束 }
上述代码中新增的部分一共有5行,实现的功能很简单,只是在程序启动后在控制台打印“Hello World”罢了。
在该代码文件内部右击,并在快捷菜单中选择Run 'Hello.main()',命令编译器就会执行这段代码。代码运行结果显示在主界面下方的Run窗口中,这个Run窗口就是所谓的运行区,也称控制台,既能输出Java程序的打印文本,又能供开发者向Java程序输入文本。观察Run窗口可见输出了一行文字“Hello World”,如图1-34所示。
图1-34 IDEA底部的运行区域(可观察程序的输出结果)
看到上面Run窗口的文字信息,表示Hello.java程序成功跑起来了,这可是货真价实的第一个Java程序。
当然,前面的操作步骤完全依赖于IDEA开发环境,每当开发者选择指定菜单之后,IDEA就会自动执行相关命令。为了更好地理解Java程序的工作机制,接下来不妨绕过IDEA,自己动手编译和运行这个Hello World程序。
以Windows系统为例,打开系统自带的命令行窗口,输入cd命令切换到Hello.java所在的目录,然后输入下面这行命令,并按回车键:
javac Hello.java
假如提示报错“编码GBK的不可映射字符”,则是因为IDEA对Java文件采用了UTF-8编码造成的。这时改为输入下面这行命令:
javac -encoding UTF-8 Hello.java
回到Hello.java所在的目录,发现该目录下多了一个扩展名为.class的文件—— Hello.class,其实它是Java编译产生的字节码文件。class文件并不是本地的可执行程序,只是Java虚拟机能够识别的“机器语言”。要想让它真正跑起来,还得在命令行窗口输入下面这行命令:
java Hello
不料好事多磨,这行指令报错“找不到或无法加载主类”,原因是Java命令需要指定完整的程序路径,所以要先返回src目录,再输入以下命令:
java com/world/hello/Hello
或者把斜杠换成点号,也就是输入以下命令:
java com.world.hello.Hello
然后按回车键,一番折腾之后,命令行窗口终于把“Hello World”打印出来了,如图1-35所示。
图1-35 通过命令行编译和运行Java程序的步骤
这下大功告成,无论是通过IDEA执行Java程序,还是通过命令行跑Java程序,都成功地输出了“Hello World”。一个好的开始是成功的一半,Java的编程世界正在打开大门,里面还有更多精彩的剧情等着你。