第3章 Java的基本程序设计结构
- 一个简单的Java 程序
- 注释
- 数据类型
- 变量与常量
- 运算符
- 字符串
- 输入与输出
- 控制流程
- 大数
- 数组
现在,你应该已经成功地安装了 JDK,并且能够执行第 2 章中的示例程序。下面开始介绍程序设计。本章主要介绍如何在 Java 中实现基本程序设计概念(如数据类型、分支以及循环)。
下面仔细分析一个最简单的Java程序,它只是向控制台打印一个消息:
这个程序虽然很简单,但这些内容在所有Java应用中都会出现,因此还是值得花一些时间来研究的。首先,Java区分大小写。如果出现了大小写拼写错误(例如,将main拼写成Main),程序将无法运行。
下面逐行查看这段源代码。关键字public称为访问修饰符(access modifier),这些修饰符用于控制程序的其他部分对这段代码的访问级别。在第5章将会更详细地介绍访问修饰符的有关内容。关键字class表明Java程序中的全部内容都包含在类中。下一章你会更多地了解Java类,不过现在只需要将类看做程序逻辑的一个容器,定义了应用程序的行为。正如第1章所述,类是所有Java应用的构建模块。Java程序中的所有内容都必须放在类中。
关键字 class 后面紧跟类名。Java 中定义类名的规则很宽松。类名必须以字母开头,后面可以跟字母和数字的任意组合。长度基本上没有限制。但是不能使用 Java 保留字(例如,public 或 class)作为类名(保留字列表请参见附录)。
标准命名约定为:类名是以大写字母开头的名词(类名 FirstSample 就使用了这个命名约定)。如果名字由多个单词组成,每个单词的第一个字母都应该大写。这种在一个单词中间使用大写字母的方式有时成为骆驼命名法(camel case,也叫驼峰式)。以其自身为例,应该写作CamelCase。
源代码的文件名必须与公共类(public class)的类名相同,并用.java 作为扩展名。因此,存储这个代码时,文件名必须为FirstSample.java(再次提醒,大小写区分。)
补充说明:
文件名与类名相同指的是公共类,也就是public class FirstSample ,如果是没有前面的public ,只用一个 class 修饰,那就不需要相同。
大多数时候,都用public class 来组织源代码,但有些时候,我们会使用一些不对外提供的类,避免外部使用发生错误,这种情况就不创建public class,而只是创建一个 class MyClass 代码,当然,非public 的class 也可以与文件名相同(前提是没有同名的 public class),比如我们把FirstSample 改名,再去编译执行,会报错。但如果去了public 那任何FirstSample 只要是符合类名规则的名字都可以,即便是无意义的Abc都行,但不能是1Abc,因为不能数字开头。
如果已经正确地命名文件,并且源代码中没有任何录入错误,在编译这个源代码之后,会得到一个包含这个类字节码的文件。Java编译器将这个字节码文件自动地命名为FirstSample.class ,并存储在源文件所在的同一个目录下。最后使用 java FirstSample,程序执行,控制台显示“We will not use 'hello world'!”。
当使用 java ClassName 运行一个已编译的程序时,Java虚拟机总是从指定类的main 方法的代码开始执行(这里的方法就是Java中对“函数”的叫法),因此,为了能够执行代码,类的源代码中必须包含一个main方法。当然,也可以将你自己的方法添加到类中,并从main方法调用这些方法(第4章将介绍如何编写自己的方法)。
注释:根据Java语言规范,main方法必须声明为public(Java语言规范是描述Java语言的官方文档。可以从网站 http://docs.oracle.com/javase/specs 阅读或下载)。
不过,即使main方法没有声明为public,有些版本的Java解释器也会执行Java程序。有个程序员报告了这个bug。不过感兴趣,可以访问 https://bugs.openjdk.java.net/browse/JDK-查看这个bug。1999年,这个bug被标记为“关闭,不修复”(Closed,Will not be fixed)。Sun公司的一个工程师解释说:Java虚拟机规范并没有强制要求main方法一定是public,并且“修复这个bug有可能带来其他的隐患”。好在,这个问题最终得到了解决。在Java1.4及以后的版本中,Java解释器强制要求main方法必须是public。
当然,让质量保证工程师对bug报告作出决定不仅让人生疑,也让他们自己很头疼,因为他们的工作量很大,而且他们对Java的所有细节也未必了解得很清楚。不过,Sun公司在Java开源很久以前就把bug报告及其解决方案放在网站上让所有人监督检查,这是一个非常了不起的举措。
补充说明:
main方法格式是固定的,就是public static void main(String[] args){},其中args 是参数名,可以改成任意合法的名称,但一般没有人刻意改这个。其他的都是固定格式public static void main(String args){}或者 public static void main(){}或者 public static void main(String[] args,int x){} 等只是“长得像”入口主程序,但本质是普通的方法,与其他的任何方法都没有区别,这一点注意。至于原因,后续到了方法重载的时候,会理解其原因。
注意源代码中的大括号{} 。在Java 中,像在C/C++中一样,用大括号划分程序的各个部分(通常称为块)。Java中任何方法的代码都必须以“{”开始,以“}”结束。(注意,英文括号)
大括号的使用风格曾经引发过许多无意义的争论。我们的习惯是把匹配的大括号对齐。不过,由于Java编译器会忽略空白符,所以你可以选择自己喜欢的任何大括号风格。
我们暂且不考虑关键字 static void,只把它们当做编译Java程序的必要的部分就行了。在学习完第4章后,这些部分的作用就会揭晓。现在需要记住的重点是:每个Java应用都必须有一个main方法,其声明格式如下所示:
C++注释:作为一名C++程序员,你一定知道类是什么。Java的类与C++的类很相似,但有些诧异还是会使人感到困惑。例如,Java中的所有函数都是某个类的方法(标准术语将其称为方法,而不是成员函数)。因此,Java中的main方法必须有一个外壳(shell)类。你可能对C++中的静态成员函数(static member function)也很熟悉。它们是类中定义的成员函数,而且不对对象进行操作。Java中的main方法总是静态的。最后,与C/C++一样,关键字void表示这个方法不返回值,但与C/C++不同的是,main方法不会为操作系统返回一个“退出码”。如果main方法正常退出,那么Java程序的退出码为0,表示成功地运行了程序。如果要以其他退出码终止程序,则需要使用System.exit方法。
来看以下代码片段:
{
System.out.println(“We will not use 'Hello world'!”);
Java基础文章标签
}
一对大括号表示方法体的开始与结束,这个方法只包含一条语句。与大多数程序设计语言一样,可以将Java语句看成是这个语言中的句子。在Java中,每个语句必须用分号结束。特别需要说明,回车不是语句的结束标志,因此,如果需要,一条语句可以跨多行。(有些语句回车会作为结束符,比如js)
这个main方法体中只包含一条语句,其功能是将一个文本行输出到控制台。
在这里,我们使用System.out对象并调用了它的println方法。注意,. 用于调用方法。Java使用的通用语法是 object.methed(parameters)
这等价于一个函数调用。
在这个示例中,println方法接受一个字符串参数。这个方法将这个字符串参数显示在控制台上。然后,终止这个输出行(换行),所以每次调用println都会在新的一行上显示输出。需要注意一点,Java与C/C++一样,都使用双引号界定字符串。(本章稍后会介绍更多有关字符串的知识)
与其他程序设计语言中的函数一样,Java中的方法可以没有参数,也可以有一个或多个参数(有的程序员把参数叫做实参(argument))。即使一个方法没有参数,也需要使用空括号。例如,不带参数的println方法只打印一个空行。可以使用下面的语句:
System.out.println();
注释:System.out还有一个print方法,它不在输出之后增加换行符。例如 System.out.print(“Hello”)打印”Hello”之后不换行,下一个输出将紧跟在字母”o”之后。
补充说明:
关于Hello World程序,如果现在不能理解,也没有关系,只要将这些概念过一遍,大概有个印象就行,后面随着学习的深入,会慢慢加深理解,等一段时间之后,再回来看这些内容,就会发现,main程序的设计确实应该如此。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/2358.html