目录
第1章 成为程序员 1.1 选择编程语言 1.2 告诉计算机做什么 1.3 程序的工作原理 1.4 为什么程序不能正常工作 1.5 选择 Java编程工具 1.6 安装 Java开发工具 1.7 总结 1.8 问与答 1.9 测验 1.9.1 问题 1.9.2 答案 1.10 练习 第2章 编写第一个程序 2.1 编写程序所需的工具 2.2 创建 Saluton 程序 2.3 开始输入程序 2.3.1 class语句 2.3.2 main语句的作用 2.3.3 大括号 2.4 在变量中存储信息 2.5 保存编写好的程序 2.6 将程序编译为 class文件 2.7 修复错误 2.8 运行 Java程序 2.9 总结 2.10 问与答 2.11 测验 2.11.1 问题 2.11.2 答案 2.12 练习 第3章 Java之旅 3.1 第一站:Oracle 3.2 去 Java学校 3.3 在 JavaWorld 用午餐 3.4 在 NASA仰望天穹 3.5 回归正题 3.6 到 Java Boutique 去问路 3.7 在手机上运行 Java 3.8 总结 3.9 问与答 3.10 测验 3.10.1 问题 3.10.2 答案 3.11 练习 第4章 理解Java程序的工作原理 4.1 创建应用程序 4.2 向应用程序传递参数 4.3 创建 applet 4.4 总结 4.5 问与答 4.6 测验 4.6.1 问题 4.6.2 答案 4.7 练习 第5章 在程序中存储和修改信息 5.1 语句和表达式 5.2 指定变量类型 5.2.1 整数和浮点数 5.2.2 字符和字符串 5.2.3 其他数值类型的变量 5.2.4 布尔型变量 5.3 给变量命名 5.4 在变量中存储信息 5.5 运算符 5.5.1 变量的递增与递减 5.5.2 运算符优先级 5.6 使用表达式 5.7 总结 5.8 问与答 5.9 测验 5.9.1 问题 5.9.2 答案 5.10 练习 第6章 使用字符串来交流 6.1 在字符串中存储文本 6.2 在程序中显示字符串 6.3 在字符串中使用特殊字符 6.4 拼接字符串 6.5 将其他变量用于字符串中 6.6 字符串的高级处理 6.6.1 比较两个字符串 6.6.2 确定字符串的长度 6.6.3 改变字符串的大小写 6.6.4 查找字符串 6.7 导演及演员名单 6.8 总结 6.9 问与答 6.10 测验 6.10.1 问题 6.10.2 答案 6.11 练习 第7章 使用条件测试进行判断 7.1 if语句 7.1.1 小于和大于的比较 7.1.2 相等和不等 7.1.3 使用块语句组织程序 7.2 if-else 语句 7.3 switch语句 7.4 条件运算符 7.5 观察时钟 7.6 总结 7.7 问与答 7.8 测验 7.8.1 问题 7.8.2 答案 7.9 练习 第8章 使用循环重复执行操作 8.1 for循环 8.2 while 循环 8.3 do-while 循环 8.4 退出循环 8.5 给循环命名 8.6 测试计算机的运行速度 8.7 总结 8.8 问与答 8.9 测验 8.9.1 问题 8.9.2 答案 8.10 练习 第9章 使用数组存储信息 9.1 创建数组 9.2 使用数组 9.3 多维数组 9.4 对数组进行排序 9.5 对字符串中的字符计数 9.6 总结 9.7 问与答 9.8 测验 9.8.1 问题 9.8.2 答案 9.9 练习 第10章 创建第一个对象 10.1 面向对象编程的工作原理 10.2 对象示例 10.3 什么是对象 10.4 理解继承 10.5 建立继承层次 10.6 转换对象和简单变量 10.6.1 简单变量的类型转换 10.6.2 对象类型转换 10.6.3 在简单变量和对象之间进行转换 10.6.4 自动封装和拆封 10.7 创建对象 10.8 总结 10.9 问与答 10.10 测验 10.10.1 问题 10.10.2 答案 10.11 练习 第11章 描述对象 11.1 创建变量 11.2 创建类变量 11.3 用方法来创建行为 11.3.1 声明方法 11.3.2 参数不同的类似方法 11.3.3 构造函数 11.3.4 类方法 11.3.5 方法中变量的作用域 11.4 将一个类放在另一个类中 11.5 使用关键字this 11.6 使用类方法和类变量 11.7 总结 11.8 问与答 11.9 测验 11.9.1 问题 11.9.2 答案 11.10 练习 第12章 充分利用现有对象 12.1 继承的威力 12.1.1 继承行为和属性 12.1.2 覆盖方法 12.2 建立继承 12.3 使用现有的对象 12.4 将相同类型的对象存储到 Vector 中 12.5 创建子类 12.6 总结 12.7 问与答 12.8 测验 12.8.1 问题 12.8.2 答案 12.9 练习 第13章 创建简单的用户界面 13.1 Swing 和抽象窗口工具包 13.2 使用组件 13.2.1 窗口和框架 13.2.2 按钮 13.2.3 标签和文本框 13.2.4 复选框 13.2.5 组合框 13.2.6 文本区域 13.2.7 面板 13.3 创建自己的组件 13.4 总结 13.5 问与答 13.6 测验 13.6.1 问题 13.6.2 答案 13.7 练习 第14章 用户界面的布局 14.1 使用布局管理器 14.1.1 GridLayout管理器 14.1.2 BorderLayout管理器 14.1.3 BoxLayout管理器 14.1.4 使用Insets将组件隔开 14.2 应用程序的界面布局 14.3 总结 14.4 问与答 14.5 测验 14.5.1 问题 14.5.2 答案 14.6 练习 第15章 响应用户输入 15.1 让程序监听 15.2 设置要监听的组件 15.3 处理用户事件 15.3.1 复选框和组合框事件 15.3.2 键盘事件 15.3.3 启用和禁用组件 15.4 完善图形应用程序 15.5 总结 15.6 问与答 15.7 测验 15.7.1 问题 15.7.2 答案 15.8 练习 第16章 创建复杂的用户界面 16.1 滚动窗格 16.2 滑块 16.3 变更监听器 16.4 使用图像图标和工具栏 16.5 总结 16.6 问与答 16.7 测验 16.7.1 问题 16.7.2 答案 16.8 练习 第17章 创建交互式Web程序 17.1 标准applet方法 17.1.1 在applet窗口中绘画 17.1.2 初始化applet 17.1.3 启动和停止applet 17.1.4 销毁applet 17.2 将applet放到Web页面中 17.3 创建applet 17.3.1 在applet窗口中绘画 17.3.2 测试SalutonApplet程序 17.4 从Web页面传递参数 17.5 在applet中接收参数 17.6 在applet中处理参数 17.7 使用object标记 17.8 总结 17.9 问与答 17.10 测验 17.10.1 问题 17.10.2 答案 17.11 练习 第18章 处理程序中的错误 18.1 异常 18.1.1 在try-catch块中捕获异常 18.1.2 捕获多种不同的异常 18.1.3 出现异常后进行处理 18.1.4 抛出异常 18.1.5 忽略异常 18.2 抛出和捕获异常 18.3 总结 18.4 问与答 18.5 测验 18.5.1 问题 18.5.2 答案 18.6 练习 第19章 创建线程程序 19.1 线程 19.1.1 降低程序的速度 19.1.2 创建线程 19.2 使用线程 19.2.1 声明类 19.2.2 创建变量 19.3 从init( )开始 19.4 在创建URL时捕获错误 19.5 在paint( )方法中处理屏幕更新 19.6 启动线程 19.6.1 运行线程 19.6.2 停止线程 19.7 处理鼠标单击 19.8 循环显示链接 19.9 总结 19.10 问与答 19.11 测验 19.11.1 问题 19.11.2 答案 19.12 练习 第20章 读写文件 20.1 流 20.1.1 文件 20.1.2 从流中读取数据 20.1.3 缓冲输入流 20.2 将数据写入流中 20.3 读写配置属性 20.4 总结 20.5 问与答 20.6 测验 20.6.1 问题 20.6.2 答案 20.7 练习 第21章 读写XML数据 21.1 创建XML文件 21.2 读取XML文件 21.3 读取 RSS 聚合内容(Syndication Feeds) 21.4 总结 21.5 问与答 21.6 测验 21.6.1 问题 21.6.2 答案 21.7 练习 第22章 利用JAX-WS开发Web服务 22.1 定义服务端点接口 使用注解来简化Java代码 22.2 创建服务实现Bean 22.3 发布Web服务 22.4 使用Web服务描述语言文件 22.5 创建Web服务客户端 22.6 总结 22.7 问与答 22.8 测验 22.8.1 问题 22.8.2 答案 22.9 练习 第23章 创建Java2D图形 23.1 使用Font类 23.2 使用Color类 23.3 创建自定义颜色 23.4 绘制直线和形状 23.4.1 绘制直线 23.4.2 绘制矩形 23.4.3 绘制椭圆和圆 23.4.4 绘制弧线 23.5 绘制饼图 23.6 总结 23.7 问与答 23.8 测验 23.8.1 问题 23.8.2 答案 23.9 练习 第24章 编写Android app 24.1 Android简介 24.2 创建 Android app 24.2.1 剖析一个Android新项目 24.2.2 创建app 24.2.3 安装Android模拟器 24.2.4 创建调试配置 24.3 运行app 24.4 设计真实的app 24.4.1 组织资源 24.4.2 配置app的Manifest文件 24.4.3 设计用户界面 24.4.4 编写Java代码 24.5 总结 24.6 问与答 24.7 测验 24.7.1 问题 24.7.2 答案 24.8 练习 附录A 使用NetBeans IDE A.1 安装NetBeans A.2 创建新项目 A.3 创建新的Java类 A.4 运行应用程序 A.5 修复错误 附录B Java资源 B.1 可以考虑的其他书 B.2 Oracle公司的 Java官方站点 B.3 其他Java站点 B.3.1 本书英文版的配套网站 B.3.2 Café au Lait B.3.3 Workbench B.3.4 Java 7 Developer Blog B.3.5 其他Java博客 B.3.6 InformIT B.3.7 Stack Overflow B.3.8 Java Review Service B.3.9 JavaWorld杂志 B.3.10 Developer.com’s Java Directory 附录C 本书站点 附录D 设置Android开发环境 D.1 起步 D.2 安装Eclipse D.3 安装 Android SDK D.4 安装在Eclipse中使用的Android插件 D.5 设置你的手机 其他 版权

Java初级教程

Java入门经典
第5章 在程序中存储和修改信息

本章介绍如下内容:

创建变量;

使用不同类型的变量;

在变量中存储值;

在数学表达式中使用变量;

把一个变量的值赋给另一个变量;

递增或递减变量的值。

在第2章中,我们使用到了一个变量,它是一个用于存储信息的特殊位置。程序运行时,变量中存储的信息可以发生改变。在你的第一个程序中,变量中存储了一个字符串。字符串只是可在变量中存储的一种信息类型,变量还可以存储字符、整数、浮点数和其他类型的信息。

本章将更详细地介绍如何在Java程序中使用变量。

5.1 语句和表达式

计算机程序是一组告诉计算机做什么的指令,每一个指令称为语句。下面就是Java程序中的一条语句:

在Java程序中,可以使用括号将一组语句编组,这一组语句称为块语句(block statement)。请看下面的程序片段:

其中第2~4行是一条块语句。第1行的左大括号表示块语句开始,第5行的右大括号表示块语句结束。

有些语句被称为表达式,原因是它包含一个数学表达式,并能得到一个结果。在上面的例子中,第4行就是一个表达式,因为它将变量c的值设置为8和5的乘积。在接下来的几节中,读者将会用到表达式。

5.2 指定变量类型

计算机在运行程序时,变量是计算机记住信息的主要方法。第 2 章的 Saluton 程序使用greeting 变量来存储“Saluton mondo!”消息。计算机需要记住这段文本,以便稍后显示。

在Java程序中,创建变量所使用的语句必须包含下列两项内容:

变量名;

变量存储的信息类型。

变量也可以包含将要存储的信息的值。

要看不同类型的变量以及如何创建它们,可以运行NetBeans,然后创建一个新的空Java文件,其类名为Variable。

开始编写程序,输入下面的代码:

对其进行修改前保存该文件。

5.2.1 整数和浮点数

至此,程序Variable有了一个main()块,其中只包含一条语句:注释//Coming soon: varia-bles。删除注释并输入下列语句:

这条语句创建一个名为tops的变量,但没有给它赋值,因此该变量此时是一个空的存储空间。语句开头的int指定tops是一个用于存储整数的变量。可以使用int类型来存储计算机程序所需的大多数整数,它能够存储−2.14×109~2.14×109的任何整数。

在语句 int tops;的末尾换行,然后输入下面的语句:

这条语句创建一个名为gradePointAverage的变量,其中float表示浮点数。浮点数变量用来存储可能包含小数的数值。

float变量类型可以存储高达38位的十进制数,而double变量类型可以存储高达300位的十进制数。

注意:

可以使用浮点变量来存储像2.25这样的绩点成绩(GPA)(我进入北德克萨斯大学的 GPA 就是 2.25),还可用于存储像 0 这样的数字。我当年凭GPA进入一所好研究院的机会也是0。不过,我在1996年找工作时,仍然被Sams出版社慧眼识珠,招募为他们的计算机图书作者。

5.2.2 字符和字符串

到目前为止,你所处理的变量都是数值型的,因此可能认为所有变量都是用来存储数字的。也可以使用变量来存储文本,在变量中可以存储两种类型的文本:字符和字符串。字符是单个字母、数字、标点符号或其他符号。字符串是一组字符。

创建Variable程序的下一步是创建一个char变量和一个String变量。在语句float gradePoint Average;后面加入下面两条语句:

在程序中使用字符值时,必须用单引号将赋给变量的字符值括起来,而对于字符串值必须用双引号括起来。

引号可以将字符或字符串同变量名或其他语句部分区分开来。请看下面的语句:

这条语句看起来好像告诉计算机,创建一个名为productName的字符串变量,并将文本值 Larvets 赋给该变量。但是由于没有使用双引号将单词 Larvets 括起,计算机认为要将productName的值设置为变量Larvets的值。

加入 char 和 String 语句后,程序将如程序清单 5.1 所示。在更改之后,不要忘记存盘。

程序清单5.1 Variable程序

Variable程序中的最后两个变量在创建时,使用等号“=”赋予了初始值。在Java程序中,可以用这种方法给任何变量赋值,这将在本章后面看到。

该程序可以运行,但是不会产生输出。

注意:

尽管其他变量类型都是小写字母(int、float和char),但创建字符串变量时,单词String的首字母必须大写。在Java程序中,字符串与变量语句中使用的其他信息类型不同,这将在第6章介绍。

5.2.3 其他数值类型的变量

前面介绍的变量是本书使用的主要变量类型,读者编写的大多数Java程序也可能如此。在特殊情况下,还可使用其他几种变量。

还有3种其他类型的整型变量。第一种为byte,取值范围为−128~127的整数。下面的语句是创建一个名为escapeKey的变量,其初始值为27:

第二种为short,可用于存储比int类型小的整数,其取值范围为−32768~32767的整数,如下例所示:

最后一种数值变量类型的是long,通常用于存储int 类型无法存储的整数。long 变量可以存储−9.22×1018~9.22×1018的整数。

在Java中处理很大的数值时,很难一目了然地看到具体的数值,如下面的语句所示:

除非你数一下 0 的个数,否则你很难看出它表示的是 264.4 百万美元。Java 7 对此做了改进,在处理很大的数值时,可以在数值中间使用下划线(_),如下所示:

下划线将会忽略掉,因此变量的值没有发生变化,这只是一种让数值更容易阅读的方式。

警告:

如果NetBeans的IDE不能识别Java 7,则Java 7中提供的所有改进(包括数值中的下划线),在源代码编辑器中,都将标识为错误。对IDE进行设置,使其识别 Java 7的方法将在第 7 章介绍。

5.2.4 布尔型变量

Java有一种特殊类型的变量叫布尔变量,它只能存储true或false。乍一看,布尔型变量好像没多大用途,除非要编写大量基于计算机的真假测验。然而,编写程序时,很多情况下都需要使用布尔型变量。下面是一些可使用布尔型变量解决的问题。

用户是否按下了某个键?

游戏结束了吗?

银行账户透支了吗?

这些裤子让我看起来更胖了么?

兔子能吃Trix吗?

下面这条语句创建了一个名为gameOver的布尔型变量:

这个变量的初始值为false,这样的语句可在游戏程序中指示游戏还没有结束。然后,当导致游戏结束的事件发生时,将变量gameOver设置为true。

虽然在程序中,布尔型变量的两个可能取值true或false看起来像字符串,但不应将它们用双引号括起。第7章将更详细地介绍布尔型变量。

注意:

布尔数字是用George Boole(1815~1864)的名字命名的。Boole是一名数学家,在成年前靠自学成才。他发明了布尔代数学,这是计算机编程、数字电路和逻辑学的重要组成部分。可以想象,他在孩童时就能够做很好的真假测试。

5.3 给变量命名

在 Java 中,变量名可以以字母、下划线字符(_)、美元符号($)打头。名称的其余部分可以是任何字母或数字。在遵守这些规则的情况下,你可以取任何喜欢的变量名,但应该采用统一变量命名规则。本节将介绍常用的变量命名方法。

在变量名的问题上,Java是区分大小写的,所以变量名在整个程序中必须大小写一致。例如,如果变量gameOver在程序的其他地方写成GameOver,编译程序时使用GameOver的地方将导致错误。

变量名应该描述变量的用途,第一个字母应该小写,如果变量名有多个单词组成,则将其他单词的首字母大写。例如,如果要创建一个整型变量,用于存储游戏中创记录的最高分,可使用下面的语句:

在变量名中不能使用标点符号和空格,因此下面的变量名都是非法的:

如果在程序中使用这些变量名,NetBeans将在源代码编辑器中的相应行处用红色警告图标来显示,表示这是一个错误。

5.4 在变量中存储信息

在Java程序中,可以在创建变量时就给它赋值,也可以以后再给变量赋值。

要在创建变量时就给它赋初值,可以使用等号(=)。下面的例子创建双精度浮点变量pi,且其初始值为3.14:

所有数值型变量都可以用类似的方法赋值。如果创建的是字符或字符串变量,必须像前面介绍的那样用引号将赋给变量的值括起来。

如果两个变量的类型相同,也可以将一个变量的值赋给另一个变量,请看下面的例子:

首先,创建了一个整型变量mileage,并且其初始值为300。接下来,创建了另一个整型变量totalMileage,并将变量mileage的值赋给它。这两个变量的初始值相同,都是300。在接下来的几章中,将介绍如何将一个变量的值转换为另一个变量的类型。

警告:

如果没有给变量赋初始值,则在另外一条语句中使用它之前,必须先赋值。如果没有赋值,则在程序编译时将报错,并显示如下错误消息“变量可能还没有初始化”。

前面已经学到,Java有多个相似的数值变量,来存储不同大小的数值。int 和long 都存储整数,但是long存储的数值范围更大。float和double都存储浮点数值,但是double类型存储的范围更大。

你可以在数值后面追加一个字母来指示数值的类型,如下面的语句所示:

数值3.14后面的F表示这是一个float浮点数值。如果忽略了这个字母,Java会认为3.14是一个双精度浮点数值。字母L表示长精度整数,D表示双精度浮点数值。

Java的另外一种命名约定是,值不变的变量名全部大写。这些变量被称为常量,下面创建了3个常量。

由于常量的值不变,读者可能会问,为何使用常量,只需使用赋给常量的值即可。使用常量的优点之一是,程序更容易理解。

在上面的3个语句中,常量的名字是大写的。尽管这在Java中不是必需的,但是编程人员已经将其作为区分常量和变量的一种标准约定。

5.5 运算符

通过使用+、−、*、/和%等运算符,就可以在语句中使用数学表达式。在Java程序中使用这些运算符,就可以处理数值运算。

在Java中使用+运算符的加法表达式语句如下所示:

上面第2条语句使用+运算符将weight变量的值设置为weight变量的初始值与10的和。使用-运算符的减法表达式如下:

该表达式将weight变量的值设置为weight变量的初始值减去15后的结果。

使用/运算符的除法表达式如下:

该表达式将weight变量的值设置为其初始值除以3后的结果(取整)。

要从除法表达式中找到余数,可以使用%运算符(也称为取模运算符)。下面两条语句可以求得245除以3之后的余数。

乘法表达式使用的是*运算符。下面这条复杂的语句使用了乘法表达式。

表达式 score*12 中,变量 score与 12 相乘。这条完整的语句是将变量 score 与 12 相乘,然后再加500,最后将结果赋给total变量。如果score的值为20,则total变量的最终值是740,也即 500 +(20*12)。

5.5.1 变量的递增与递减

在程序中,常见的任务是将变量的值加1或减1。其中加1的操作称为变量递增,减1的操作称为变量递减。这些任务可以使用相应的运算符来完成。

使用++运算符可以将变量加1,如下面的语句所示:

该语句将存储在x变量中的值进行加1操作。

使用--运算符可以将变量减1,如下所示:

该语句将变量y中的值减1。

也可以将递增运算符和递减运算符放置在变量名的前面,如下面的语句所示。

将运算符放置在变量前面,称之为运算符前置;放到后面,则称之为运算符后置。

注意:

有点困惑?其实,当你回想一下在小学时学到的前缀的概念,就会发现前置与后置的概念很简单。与 sub-或 un-这样放在单词前面的前缀相同,前置运算符是放置在变量名的前面,而后置运算符则是放置在变量名的后面。

在表达式中使用递增、递减运算符时,一定要注意运算符前置和运算符后置的区别,这很重要。

考虑下面的语句:

在这两条语句处理完毕之后,answer变量的值是多少呢?你可能认为应该是40。当然,如果是对3加1,这样等于4,然后再乘以10,这样就是40。

然而,answer 变量实际的值却是 30,因为这里使用的后置运算符,而不是前置运算符。

当表达式中的变量使用了后置运算符时,只有当整个表达式执行完毕之后,变量的值才会发生改变。语句 int answer = x++*10 的执行顺序与下面的两条语句相同。

如果使用的是前置运算符,则顺序相反。也就是说,如果表达式的变量中使用的是前置运算符,则该变量的值会在表达式执行完毕之前就发生改变。

来看下面的语句:

此时answer变量的值将等于40。前置运算符会在表达式执行之前,先将变量x加1。语句 int answer = ++x*10 的执行顺序与下面的语句相同:

读者很容易就会对++运算符和--运算符产生恼怒心理,因为它们不像本书中出现的其他概念那样,容易让人理解。

注意:

第 1 章介绍 C++编程语言的名称时,指出这是一个玩笑的结果,以后读者将明白。知道运算符++,读者就能够明白为什么C++使用两个+而不是一个。也许可笑:由于C++在C语言的基础上增加了很多新特性和功能,因此将其命名为C++。

在阅读本书章后,读者也能够讲这个笑话,且全世界99%的人都不会理解。

在编写Java程序时,也可以不使用递增和递减运算符,通过如下方式来使用+和−运算符,同样也可以实现同样的结果。

递增和递减是很有效的便捷方式,但也会让表达式看起来更长。

5.5.2 运算符优先级

当在一个表达式中使用多个运算符时,需要知道计算机处理这些运算符的先后顺序。来看下面的语句:

在计算机处理这些语句时,除非你事先知道其处理的先后顺序,否则将很难确定x变量的值到底是多少。取决于y*3先执行,还是3+5先执行,x的结果可能是35,也可能是80。

在计算表达式时,将会按照如下顺序来执行。

1.先执行递增和递减操作。

2.然后执行乘、除以及取模运算。

3.然后执行加、减操作。

4.然后是“比较”操作。

5.最后使用等号(=)来设置变量的值。

由于乘法运算先于加法运算发生,因此可以反过头来看前面的例子,然后得出答案:y先与3相乘,其结果是30,然后再加5,这样x变量的值最终为35。

“比较”操作将在第 7 章讲解。其他运算顺序已经在本章讲解了,因此现在可以求出下面语句的结果了。

上述语句执行完毕之后,number变量的值是50。

计算机是如何得出这个结果来的呢?计算机首先处理递增运算符,因此 x++表达式将变量x的值设为6。注意,++运算符位于变量x的后面,是后置运算符,也就是说,在计算该表达式时,使用的是变量x的初始值。

由于使用的是变量x在递增之前的初始值,因此表达式如下所示:

现在,计算机开始从左向右处理乘除运算。即5先乘以6,然后是4乘以10,这个结果再除以2,这样表达式成为下面的样子:

该表达式将变量number的值设置为50。

如果想以不同的顺序来对表达式求解,可以使用小括号把表达式的一部分括起来,它们就可以先被处理了。例如,x = 5*3 + 2;在执行完毕时,x 的值是 17,原因就是先执行乘法运算,然后再执行加法运算。然而,如果将该表达式修改为下面的形式:

此时,括号内的表达式将先被执行,这样x的最终结果就是25。读者可以根据需要在语句中使用括号。

5.6 使用表达式

当你小时候在学校遇到令人讨厌的数学题时,是否抱怨过高次乘方,发誓今后再也不使用这样的知识?对不起,这里可能破坏你的誓言,但所有的老师都是正确的——这些数学知识将在计算机编程中得到应用。这真是个坏消息。

但好消息是计算机将帮你做这些数学题。计算机程序中经常使用表达式,可以使用它们完成下面这样的任务:

修改变量的值;

在程序中计数;

在程序中使用数学公式。

编写计算机程序并使用表达式时,你又回到了过去的数学课中。表达式可以使用加、减、乘、除和求模。

要看一看运行中的表达式,回到 NetBeans 并创建一个新的 Java 文件,其类名为PlaneWeight。这个程序可以记录某一个人在进入到太阳系时,其体重的增减。输入程序清单5.2中的所有代码。下面依次讲解该程序的每一部分。

程序清单5.2 PlaneWeight程序

输入完毕后,保存文件。然后通过菜单命令 Run->Run File 来运行该程序。输出结果如图5.1所示。

图5.1 PlaneWeight 程序的输出

和你创建的其他程序一样,PlaneWeight 程序也使用了 main()块语句来进行相应的处理。该语句可以分成下面4部分。

1.第3~5行:将人在地球上的初始体重设置为205。

2.第7~9行:计算人在水星上的体重,其值减少。

3.第11~13行:计算人在月球上的体重,其值减少。

4.第15~17行:计算人在木星上的体重,其值增加。

第4行创建了weight变量,并使用int将其指定为整型变量。该变量的初始值为205,在整个程序中用于监控人的体重。

下一行类似于程序中的其他语句:

命令System.out.println( )显示其括号中包含的字符串。在第3 行,System.out.print( )命令显示文本“Your weight on Earth is”。程序中还有多个System.out.print( )和System.out.println( )语句。

它们之间的区别在于,print( )在显示完文本后,不会自动换行,而println( )则会自动换行。

5.7 总结

学习了变量和表达式后,读者将能够在程序中向计算机发出更多的指令。有了本章学习到的知识,读者可以编写程序,完成众多类似计算器的任务,轻松地处理复杂的数学等式。

数字只是一种可存储到变量中的信息,还可以存储字符、字符串以及特殊值true和false (被称为布尔型变量)。下一章将介绍字符串变量以及如何使用它们。

5.8 问与答

问:在Java程序中,一行和一条语句是一回事吗?

答:不是。虽然本书的程序都将每条语句放在一行内,但旨在让程序更容易理解,并非必须如此。

Java编译器在编译程序时不考虑行、空格或其他格式问题,编译器只要求每条语句以分号结束。下面的这一行代码对Java来说也无问题:

可以在一行中放置多条语句,但这样做让阅读源代码的人难以理解。鉴于这种原因,通常不建议这样做。

问:为什么变量名的首字母要小写,如gameOver?

答:这是一种命令约定,而且对你的编程很有帮助。首先,它可以让变量更容易识别,从而与Java程序中的其他元素区分开来。另外,通过采用统一的变量命名规则,当你在程序的多个地方使用同一个变量时,更容易修复出现的错误。本书使用的命名规则已被大多数Java程序员采用多年。

问:我可以在Java程序中将二进制值赋值给整型变量么?

答:在 Java 7 中可以这样做。在为整型变量赋二进制值时,需要在数值前面添加字符 0b。由于1101是数字13的二进制值,因此下面的语句是将13赋值给整型变量z。

下划线的目的只是为了增加语句的可读性,在编译阶段会被Java编译器忽略。

如果你的项目使用的不是 Java 7,则 NetBeans会把该特性当作错误来对待。第 7 章将会对其详细讲解。

5.9 测验

回答下列问题,以测试对变量、表达式以及本章介绍的其他知识的理解程度。

5.9.1 问题

1.位于左大括号和右大括号之间的一组语句称为什么?

a.块语句。

b.组件(groupware)。

c.用括号括起的语句。

2.布尔型变量用于存储true或false。

a.正确。

b.错误。

c.不,谢谢,我吃过了。

3.变量名不能以哪些字符打头?

a.美元符号($)。

b.双斜线(//)。

c.字母。

5.9.2 答案

1.a.括起来的语句称为块语句或块。

2.a.布尔型变量只能存储true或false。

3.b.变量名可以以字母、美元符号($)或下划线(_)打头。如果变量名以两个斜杠打头,该代码行后面的内容将被忽略,因为双斜杠表示注释行。

5.10 练习

为充分复习本章的主题,请完成下面的练习。

扩展PlaneWeight程序,记录人在金星上的体重(大约是人在地球上的体重的90.7%),以及人在天王星上的体重(大约是地球上的88.9%)。

创建一个简短的Java程序,它使用整型变量x和y,并显示x和y的平方和。

有关为完成这些练习而编写的Java程序,请访问本书的配套网站www.java24hours.com。

没有精选讨论主题。

全部讨论主题 查看精选主题

没有讨论主题。
😃 😅 😆 😁 😂 😊 😄 😠 😩 😲 😞 😵 😰 😒 😍 😤 😜 😝 😋 😘 😚 😷 😳 😢 😭 😨 😣 😡 😌 😖 😔 😱 😪 😏 😓 😥 😫 😉 👊 👍 👆 👇 👈 👉 👋 👏 👌 👎 👐 💓 💔 💕 💖 💗 💘 💙 💚 💛 💜 💝 💞 💟