
2.1 简单程序的开发
本节通过开发一个计算圆面积的程序,说明Java程序的开发过程。编写程序涉及设计算法和将算法转换成代码两个步骤。算法描述了解决问题的步骤。算法可以使用自然语言或伪代码(自然语言和编程语言的混合)描述。例如,对上述求圆面积的问题可以描述如下:
第1步:读取半径值。
第2步:使用下面公式计算面积:

第3步:显示面积值。
编写代码就是将算法转换成程序。在Java程序中首先定义一个ComputeArea类,其中定义main()方法,如下所示:

本程序的第2和第3步比较简单。第1步的读取半径值比较难。首先定义两个变量来存储半径和面积。

变量代表内存中存储数据和计算结果的位置,每个变量需要指定其存储的数据类型和名称。double是数据类型,radius和area是变量名。在程序中通过变量名操纵变量值。变量名应尽量使用有意义的名称。
2.1.1 从键盘读取数据
要从键盘读取数据可以使用Scanner类的nextInt()方法或nextDouble()方法。首先创建Scanner类的一个实例,然后调用nextDouble()方法读取double数据:

程序2.1 ComputeArea.java

程序运行结果如下:

由于Scanner类存放在java.util包中,因此程序使用import语句导入该类。在main()方法中使用Scanner类的构造方法创建一个Scanner类的对象,在其构造方法中以标准输入System.in作为参数。得到Scanner对象后,就可以调用它的有关方法来从键盘获得各种类型的数据。程序中使用nextDouble()方法得到一个double型数据,然后将其赋给double型变量radius。最后输出语句输出以该数为半径的圆的面积。程序中圆周率使用Math类的PI常量。
提示:如果输入的数据与要获得的数据不匹配,会产生InputMismatchException运行时异常。
使用Scanner类对象还可以从键盘上读取其他类型的数据,如nextInt()读取一个整数,nextLine()读取一行文本。关于Scanner类的其他方法可参阅13.2节。
2.1.2 变量与赋值
变量(variable)是在程序运行中其值可以改变的量。一个变量通常由三个要素组成,即数据类型、变量名和变量值。Java有两种类型的变量:基本类型的变量和引用类型的变量。基本类型的变量包括数值型(整数型和浮点型)、布尔型和字符型。引用类型的变量包括类、接口、枚举和数组等。
变量在使用之前必须定义,变量的定义包括变量的声明和赋值。变量声明的一般格式为:

其中,type为变量数据类型、varName为变量名、value为变量值。下面声明了几个不同类型的变量。

使用赋值运算符“=”给变量赋值,一般称为变量的初始化。下面是几个赋值语句。

也可以在声明变量的同时给变量赋值。例如:

2.1.3 Java标识符
在程序设计语言中,标识符(identifier)用来为变量、方法和类命名。Java语言规定,标识符必须以字母、下画线(_)或美元符($)开头,其后可以是字母、下画线、美元符或数字,长度没有限制。例如,下面是一些合法的标识符:

Java标识符是区分大小写的,下面两个标识符是不同的。

不推荐使用无意义的单个字母命名标识符,应该使用有意义的单词或单词组合为对象命名。有两种命名方法:PascalCase和camelCase。
PascalCase称为帕斯卡拼写法,即将命名的所有单词首字母大写,然后直接连接起来,单词之间没有连接符,如NumberOfStudent,BankAccount等。
camelCase称为骆驼拼写法,它与PascalCase拼写法的不同之处是将第一个单词的首字母小写,如firstName,currentValue等。
在Java程序中,类名和接口名一般使用PascalCase拼写法,且应该用名词命名。例如:

变量名和方法名一般应用camelCase拼写法。例如:

2.1.4 Java关键字
每种语言都定义了自己的关键字。所谓关键字(keywords)是该语言事先定义的一组词汇,这些词汇具有特殊的用途,用户不能将它们定义为标识符。Java语言定义了50个关键字,如下所示。

说明:
(1)goto和const是Java语言中保留的两个关键字,没有被使用,也不能将其作为标识符使用。
(2)assert是Java 1.4版增加的关键字,用来实现断言机制。enum是Java 5版增加的关键字,用来定义枚举类型。