让我们看看我们的第一个Java程序。 运行下面的程序打印“Hello world!” 到屏幕。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
一些关键的语法特征需要注意:
public class
声明。 在Java中,所有代码都存在于类中。main
的方法内, 该方法声明为public static void main(String[] args)
。{
和 }
来表示代码段的开头和结尾。执行Java程序最常用的方法是通过一系列程序运行它。 第一个是Java编译器,或者是javac
。 第二个是Java解释器,或java
。
例如,要运行HelloWorld.java,我们将命令javac HelloWorld.java输入到终端中,然后输入命令java HelloWorld。 结果看起来像这样:
$ javac HelloWorld.java
$ java HelloWorld
Hello World!
在上图中,$表示终端的命令提示符。
您可能会注意到我们在编译时包含’.java’,但在解释时我们不包含’.class’。 这就是它的方式(TIJTWII)。
下面的程序将打印出0到9之间的整数。
public class HelloNumbers {
public static void main(String[] args) {
int x = 0;
while (x < 10) {
System.out.print(x + " ");
x = x + 1;
}
}
}
当我们运行这个程序时,我们看到:
$ javac HelloNumbers.java
$ java HelloNumbers
$ 0 1 2 3 4 5 6 7 8 9
这个程序的一些有趣特性可能会让你大吃一惊:
System.out.print
而不是System.out.println
。这意味着我们不应该包含换行符(返回)。在这些特征中,最重要的是变量具有声明的类型。
Java最重要的特性之一是所有变量和表达式都具有所谓的静态类型。Java变量可以包含该类型的值,并且只包含该类型。此外,变量的类型永远不会改变。
Java编译器的一个关键特性是它执行静态类型检查。 例如,假设我们有以下程序:
public class HelloNumbers {
public static void main(String[] args) {
int x = 0;
while (x < 10) {
System.out.print(x + " ");
x = x + 1;
}
x = "horse";
}
}
编译这个程序,我们看到:
$ javac HelloNumbers.java
HelloNumbers.java:9: error: incompatible types: String cannot be converted to int
x = "horse";
^
1 error
编译器甚至在运行之前就拒绝该程序。这是一个大问题,因为这意味着在世界上运行这个程序的人不会遇到类型错误!
这与Python等动态类型语言形成对比,用户可以在执行期间遇到类型错误!
除了提供额外的错误检查之外,静态类型还让程序员确切地知道他或她正在使用哪种对象。 我们将在未来几周看到这是多么重要。 这是我个人最喜欢的Java功能之一。
总而言之,静态类型具有以下优点:
由于所有Java代码都是类的一部分,因此我们必须定义函数,使它们属于某个类。 属于类的函数通常称为“方法”。 我们将在整个课程中互换使用这些术语。Java程序如下:
public class LargerDemo {
public static int larger(int x, int y) {
if (x > y) {
return x;
}
return y;
}
public static void main(String[] args) {
System.out.println(larger(8, 10));
}
}
这里的新语法是我们使用关键字public static声明我们的方法,这是Python的def关键字的一个非常粗略的模拟。 我们将在下一章中看到声明方法的其他方法。
代码在很多方面都很漂亮。它可以简洁。它可以很聪明。它可以很有效率。新手代码中最不受重视的一个方面是代码风格。 当你作为一个新手编程时,你通常会一心想要让它工作,而不必再考虑它或者长时间保持它。
在本课程中,我们将努力保持代码的可读性。 良好编码风格的一些最重要的特征是:
getUserName
而不是x或f的变量或函数。黄金法则是:编写代码,以便陌生人易于理解。
我们鼓励您编写自我记录的代码,即通过选择变量名称和函数名称,以便于确切地知道发生了什么。 但是,这并不总是足够的。例如,如果要实现复杂算法,则可能需要添加注释来描述代码。您对评论的使用应该是明智的。 通过经验和对他人代码的接触,您会感受到评论最合适的时候。
一个特别的注意事项是,您所有的方法和几乎所有的类都应该用一个注释来描述,使用所谓的Javadoc格式。在Javadoc注释中,块注释以一个额外的星号开始,例如/**,注释通常(但不总是)包含描述性标记。我们不会在这本教科书中讨论这些标签,但是请参阅上面的链接来了解它们是如何工作的。
作为没有标签的示例:
public class LargerDemo {
/** Returns the larger of x and y. */
public static int larger(int x, int y) {
if (x > y) {
return x;
}
return y;
}
public static void main(String[] args) {
System.out.println(larger(8, 10));
}
}
广泛使用的javadoc工具可用于生成代码的HTML描述。 我们将在后面的章节中看到示例。