corejava11(3.1 一个简单的Java程序)

3.1 一个简单的Java程序

让我们再仔细看一看你所拥有的一个最简单的Java程序——一个仅仅在控制台上打印的程序:

public class FirstSample
{
    public static void main(String[] args)
    {
        System.out.println("We will not use 'Hello, World!'");
    }
}

值得花费所有的时间来熟悉这个示例的框架;这些片段将在所有应用程序中重复出现。首先,Java是区分大小写的。如果您在大写(如键入Main而不是main)时出错,程序将不会运行。

现在,让我们一行行看源代码。关键字public叫做访问修饰符;这些修饰符控制控制程序的其它部分对该代码的访问级别。我们将在第五章讲更多关于访问修饰符的东西。关键字class提醒你,Java中的所有东西都是在类里面。因为我们将花费许多时间在下一章的类上面,现在你可以把class当成程序逻辑的容器,它定义了一个应用程序的行为。正如在第一章提到的,类是构造块,所有的Java应用程序和applet都是在此基础上构建的。Java程序中的所有东西都必须在一个类里面。

class关键字的后面是类的名字。Java中类的名字规则是十分有限的。名字必须以一个字符开始,并且在后面能够跟上字母和数字。长度也是有限制的。你不能使用一个Java预留单词(例如public或者class)作为类名。(请查看附录来查看预留关键字列表)

标准的命名约定(我们在FirstSample名称中遵循)是类名是以大写字母开头的名词。如果名称由多个单词组成,请在每个单词中使用大写字母。(在单词中间使用大写字母有时称为“camel case”,或自指“CamelCase”)。

你需要使源代码的文件名,和公有类的名字相同,并以.java作为后缀。因此,你必须保存这个代码在一个叫做FirstSample.java的文件中。(再一次,大小写是重要的,不要使用firstsample.java)

如果你已经正确命名文件,并且在源代码中没有拼写错误,然后当你编译源代码的时候,你将得到一个包含这个类字节码的文件。Java编译器自动命名字节码文件FirstSample.class并且把它存储在与源文件相同的目录。最后,运行程序通过使用下面的命令:

java FirstSample

(记住,去掉.class后缀)当程序执行的时候,它简单打印字符串We will not use 'Hello, World!'在控制台中。

当你使用

java ClassName

来运行已经编译的程序,Java虚拟机总是开始执行你指定的class中main方法中的代码。(Java将函数成为方法)因此,你必须有一个main方法在你类的源文件中,以便你的代码能够执行。你也能够添加你自己的方法到一个类当中,并且通过main方法调用它们。(我们将在下一章节中涉及如何编写你自己的方法。)

注意

根据Java语言规范,main方法必须被声明为public。(Java语言规范是描述Java语言的官方文档。你能够从http://docs.oracle.com/javase/specs.查看或者下载它。)

但是一些版本的Java启动器会执行那些不为public的main方法。一个程序员编写了一个bug报告。为了查看它,访问http://bugs.java.com/bugdatabase/index.jsp并且出入Bug ID 4252539 。在1999,这个bug被标记为“关闭,不会被修复。”一个Sun工程师添加一个解释,Java虚拟机规范(在http://docs.oracle.com/javase/specs/jvms/se8/html)不会授权main为public,并且“修复它会引发潜在的麻烦。”幸运的是,幸运的是,理智终于占了上风。在Java 1.4及以后的运行器,强迫main方法必须是public

这个故事有几个有趣的方面。一方面,令人失望的是,质量保证工程师常常工作过度,而不是Java专家,他们对错误报告做出了可疑的决定。另一方面,值得注意的是,在Java是开源之前,Sun让bug报告和他们的解决方案可以供任何人仔细审查。在某一点上,Sun甚至让程序员投票支持他们最鄙视的bug,并使用投票计数来决定在下一个JDK版本中修复哪些bug。

注意源代码中的大括号。在Java中,与C/C++一样,括号描述程序中的部分(通常称为块)。在Java中,任何方法的代码必须由一个开口括号{开始,并由一个关闭括号}结束。

括号风格引发了大量无用的争论。我们遵循一种排列匹配大括号的样式。由于空白与Java编译器无关,所以可以使用任何喜欢的支撑样式。当我们讨论各种循环时,我们将有更多关于大括号的使用的内容。

现在,不要担心关键字static void,只是把它们看作是Java程序编译所需的一部分。到第四章结束时,你将完全理解这一咒语。现在要记住的是,每一个Java应用程序必须有一个主要的方法,用下面的方式声明:

public class ClassName
{
    public static void main(String[] args)
    {
        program statements
    }
}

C++笔记

作为C++程序员,你知道一个类是什么。Java类类似于C++类,但也有一些不同之处可能会影响到您。例如,在Java中,所有函数都是某类的方法。(标准术语将它们称为方法,而不是成员函数)。因此,在Java中,必须有main方法的包装类。您还可以熟悉C++中静态成员函数的概念。这些是在不对对象操作的类内定义的成员函数。Java中的main方法始终是静态的。最后,在C/C++中,空格关键字指示此方法不返回值。与C/C++不同,主方法不向操作系统返回“退出代码”。如果主方法正常退出,则Java程序具有退出代码0,表示成功完成。要使用其他退出代码终止程序,请使用System.Exit方法。

下面将你的注意力放到以下片段

{
    System.out.println("We will not use 'Hello, World!'");
}

大括号标记方法体的开始和结束。此方法中只有一条语句。正如大多数编程语言一样,你可以把Java语句看作语言的句子。在Java中,每个语句必须以分号结尾。特别是,回车不会标记语句的结尾,因此如果需要,语句可以跨多行。

main方法的主体包含一条语句,该语句向控制台输出一行文本。

这里,我们使用System.out对象并调用其println方法。注意用于调用方法的句点。Java使用通用语法

object.method(parameters)

相当于函数调用。

在本例中,我们将调用println方法并将其传递给一个字符串参数。方法在控制台上显示字符串参数。然后,它终止输出行,以便每个对println的调用都将其输出显示在一个新行上。注意,像C/C++一样,Java使用双引号来分隔字符串。(您可以在本章后面找到有关字符串的更多信息。)

Java中的方法与任何编程语言中的函数一样,可以使用零、一个或多个参数(一些程序员称之为参数)。即使方法不接受任何参数,也必须使用空括号。例如,没有参数的println方法的变体只打印一条空行。你可以使用下面语句调用它

System.out.println();

注意

System.out还有一个不向输出添加换行符的print方法。例如,System.out.print("hello")不带换行符打印hello。下一个输出在字母o之后立即出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值