以下是一个最简单的Java程序。在运行时,它会在命令行中显示Hello World!字样。

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

可以用任何一个文本编辑器,比如Windows中的记事本,输入以上代码,再保存成名为Hello.java的文件。你的第一个Java程序就完成啦!不过对于现代的软件开发人员而言,往往倾向于使用功能更加丰富便利的集成开发环境进行编程。诸如Eclipse之类的现代集成开发环境可以在编写代码时进行实时语法高亮、上下文智能补完和错误检查,也能进行后台编译和调试。比使用简单的文本编辑器要方便不少。

Hello.java就是我们所说的程序源代码。对于Java这种编译型语言而言,程序源码并不能直接运行,但可以被(受过训练的程序员)阅读、显示、编辑或打印。

在电脑上安装了Java开发工具之后,名为javac的Java编译器(compiler)可以将源代码翻译成Java虚拟机(virtual machine)可以执行的字节码(bytecode)。字节码类同于计算机中央处理器(CPU)执行的二进制指令,但其在不同平台上是完全一致的。这样无论任何CPU或者操作系统(operating system),只要能够正确运行Java虚拟机,编译好的Java程序就能直接执行。Java虚拟机在底层将字节码再次翻译成为给定CPU可以执行的二进制指令。

作为一种面向对象(object-oriented)编程语言,Java程序的基本单位是class。一个程序至少需要一个class,但是能够实现特定功能的应用程序一般需要完成数十乃至上百个class,通过它们彼此的互相交互以及它们与Java语言本身提供的class交互来实现相对较为复杂的功能。这里class的名字Hello是可以随意替换的,但是需要与源程序文件名保持一致。Java是区分大小写(case-sensitive)的编程语言。一个约定俗称的编码规范是把class的名称里每个单词的首字母大写,而由class所派生出的object则第一个单词首字母小写、其余首字母大写。

Java虚拟机在将class装载到内存以后,需要一个入口method。这个method被规定为public static void main ( String[] args )。在AP计算机课程中,你可以假定所有的method都是public,意味着可以从类以外被调用;所有的field都是private,意味着只在类内部可见。static表示这个方法不需要实例化(instantiate)object就能直接被调用,但因此method自身也只能不调用类内的任何field或仅调用static field。void表明结束method的return语句不会带有任何返回值(因为main方法的结束意味着程序的结束,也不会再有其他方法来处理其返回值了)。String[] args则是从命令行得到的参数,以String数组的形式提供,args也是一个可以随意替换的名字。函数名main由C语言和C++语言继承而来。

Java语言中花括号用来标注代码块。另一个约定俗称的编码规范是将内部的代码块用tab逐层缩进。

因为太常用而不需要importjava.lang.System提供了一些Java语言的核心功能。outSystem的三个static field之一,提供命令行标准输出流(standard output stream)。println() method的作用是将其字符串参数输出到对应的流,再在末尾换行。


陈 欣

AADPS创始人

发表评论