




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 Java编程基 础知识 您将本章主要内容: 了解 Java 编程语言 定义 Java 类 声明变量和常量 编写计算语句 编写判断语句 编写循环 声明和访问数组 第 1 章介绍面向对象的系统开发,、基本的 OO 概念和 OO 词汇,使您对 OO 及其简单的 历史有一定的了解。在本章中,将介绍 Java 编程语言的基础知识。 本书假定您熟悉某些编程语言的基础知识。虽然 Java 要求您了解新语法,但您可能熟悉许 多 Java 语句,如,许多编程语言中类似的 if-then-else 语法和循环语句 while 和 do。 本章介绍如何声明变量;、如何编写计算语句、,决定判断语句和循环以及如何声明和访 问数组。阅读完本章之后,您将了解基本的 Java 编程语法和识别 Java 与其他语言之间的区别。 并应能够设计和编写简单的 Java 类。本章主要提供有关用 Java 编程的基础知识,第 3 章将 Java 作为面向对象的语言进行研究并提供对 Java 语法的引用。 2.1 介绍 Java 首先是在 1995 年中发布的,Java 是一种相对年轻的语言, 1995 年中首次发布,但是在短期 内它已经普及并被广泛地被接受。Java 是由 Sun Microsystems 开发的,设计的 Java 它被设计成 为是一种强大的、具有全面功能的、面向对象的开发语言,在任何计算平台上都很容易学习了 解和使用。另外,设计的 Java 还支持在联网环境中开发应用程序。 Java 的部分功能来自其大而有用的类库,类库包含有数百种预先写入的类,这些类可提供 “完成从简单的数字格式化到建立网络连接和访问相关数据库关系数据库这样的任务”的方法。 本章和后面的章节将演示提供的一部分提供有类的这些类库及其其方法在本章和后面的章节中 进行演示。 Java 是面向对象的,这意味着它可以实现在第 1 章中所了解到的 OO 概念:类、实例、方 法、属性、封装、继承性和多态性。Java 通过采用 OO 模型来,Java 鼓励使用可以明显减少调 试和维护等琐碎工作的好的优秀软件设计。第 3 章更加详细地讨论 Java 的 OO 方面。 Java 是简单的,因为它使用的关键字集合比稍小于其他大多数 其他语言都要少。的关键字 集合即可获得 Java 的简单性。关键字在编程语言中有特殊的含义,编写语句时使用它们。 COBOL 和 Visual Basic 之类的关键字有数百个,但是 Java 只有 48 个关键字,这些关键字列在 第 2 章 Java 编程基础知识 19 表 2-1 中。在许多 Java 编辑器中, Java 的关键字都显示为蓝色,如 if 和 for。在表 2-1 中,以粗 体显示的关键字在本章中定义。注意当前不使用 const 和 goto。 表 2-1 Java 关键字 abstract boolean break byte case Catch char class const continue default do double else extends final finally float For goto If implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while Java 的可移植性意味着可一次性编写和编译程序,然后在许多不同的处理器和操作系统上 运行。可移植性对于 Internet 应用程序来说很重要,因为经常从服务器上将第 3 章中演示的名为 applet 的 Java 程序下载到客户端系统来执行。下载的代码必须在不需要重新编译的情况下即可 在各种计算平台上运行。如果要访问 World Wide Web,虽然可能没有注意,但是肯定已经下载 并执行了 Java Applet。 使用字节码和解释程序(interpreter)可以获得 Java 的可移植性。编译 Java 程序时,会产生字 节码。随后 Java 字节码就会在专门为各种计算平台设计的解释程序的控制下执行。此解释程序 称为 Java 虚拟机(Java Virtual Machine,JVM)。字节码和 JVM 组合意味着在不知道它将使用哪 种计算平台的情况下即可编写 Java 程序。例如,可以在 Microsoft Windows 系统上编写程序,但 是随后应该让该程序在使用 UNIX 操作系统的 Sun 工作站上执行。 图 2-1 显示如何产生 Java 字节码。编写的程序称为源文件,而且文件名带有像 Hello WorldWide.java 中的 java 扩展 名。编译源文件时,会产生字节码文件,字节码文件名带有像 Hello WorldWide.class 中的 class 扩展扩展名。字节码文件由 JVM 来执行。 如果您的计算机上安装有 Java 开发工具包(Java Development Kit,JDK),则可从命令行来 编译 Java 源代码文件。JDK 由 Java 编译器、预先编写的数百个类和 JVM 组成。可以从 Sun Web 站点上免费下载 JDK 的最新版本,网址为:。 您还可以使用几种优秀的集成开发环境(Integrated Development Environments,IDE)中的一 种环境来开发使用 Java 的 OO 软件。这些 IDE 通过提供可与 JDK 交互作用的成熟的编辑器来改 进开发效率。编辑器可以提供各种工具,包括色彩编码以指示 Java 程序的各部分。另外,还提 供有功能强大的调试和图形开发工具。表 2-2 列出几家 Java IDE 供应商,他们提供产品以及可 以在 Web 上找到有关这些产品的信息的位置。您在本书中看到的所有 Java 示例都是使用 RealJ 第部分 面向对象和 Java 基础知识 20 编写并测试的。第 3 章详细演示如何使用 Sun Microsystem 的 Forte。 图 2-1 编译 Java 表 2-2 集成开发环境软件 供 应 商 产 品 URL Allaire Kawa Borland Jbulider Helios Software TextPad IBM Visual Age Oracle JDeveloper Realj Realj www.realj.ocm Sun Microsystems Forte Symantec Visual Caf 2.2 构建 Java 类 编程惯例是通过编写代码以显示消息“Hello World”来开始了解一种新语言。因为 Java 是 面向对象的语言,因此各源代码文件实际上都可以定义类。对于您的第一个 Java 类,您可以继 续使用此惯例,但是应将消息扩充为“Hello World Wide Web”。在第一个示例中,您可以命名 类 HelloWorldWideWeb 并将代码存储在名为 HelloWorldWideWeb.java 的文件中。程序清单 2-1 显示 HelloWorldWideWeb.java 列表。 看一下程序清单 2-1 中的类列表且用以下代码来显示。第一行称为类头,因为它描述包含 在源代码文件中的类。 Java 源代码 HellowWorldWideWeb.java 字节码编译器 字节码文件 HellowWorldWideWeb.class JVM 第 2 章 Java 编程基础知识 21 程序清单 2-1 HelloWorldWideWeb.java 列表 Public class HelloWorldWindeWeb / this class has one method named main public static void main(String args) System.out.println(“Hello Workd Wide Web“); 该 Public class HelloWorldWideWeb / this class has one method named main public static void main (String args) 程序输出如下: Holl World Wide Web 关键字 public 表示该类是可公共访问的,意味着每个人都可以使用它。关键字 class 表示这 行代码是类头,HelloWorldWideWeb 是类名,也是标识符。Java 标识符是类名、方法名或变量 Java 中标识符的规则很简单。 它们可以选择它们为所选择的任意长度。 它们可以包括空格之外的任何字符。 它们必须以字母表中的字母、美元符号($)或下划线字符(_)作为开头。 Java 使用打开花括号(和关闭花括号()来描绘代码块。Java 类中的所有代码被封装为一个 代码快,该代码块本身可以包含其他块。在程序清单 2-1 显示的代码中,代码块以第一个打开的 花括号开始,并以最后一个关闭的花括号结束,这显示在下面的代码中: / this class has one method named main public static void main (String args) System.out.printIn (“Hello World Wide Web“); Java 使用代码块来组织语句。稍后您将看到 Java 如何将代码块用于方法、循环和 if 语句。 注意 HelloWorldWideWeb.java 代码具有一套组辅助的打开和关闭的花括号,这套组花括号用来 定义第一个代码块中的代码块。方法的第二个代码块将在后面的段落中会对某方法的第二个代 码块进行介绍。 Java 区分大小写。例如,Java 区分 public 和 Public 以及 class 和 Class(在这 2 个案例中,小 写版本是正确的关键字)。如果已经用不区分大小写的语言编写了代码,那么在输入 Java 代码时 第部分 面向对象和 Java 基础知识 22 一定要细心。另外,该编译器不要求缩排代码,但是好的编程设计习惯主张缩排代码,如本文 中的示例所示。该编译器还允许将一个语句扩充到多行上 不需要连行符( 注意不能在字符串 字面值 双引号中的一个值的中间中断一行。要这样做,必须使用下一章中讲述的连接运算 符)。 在 HelloWorldWideWeb 代码中,注释行紧跟在类头和打开的花括号的后面。可使用注释行 向编译器忽略的代码中添加解释。Java 注释由一个双正斜杠 /开始,而且它自己可以在占据一行 上,也可以用在某行代码的结尾。Java 具有 2 个其他格式的注释语句。第一个称为多行注释, 该注释由/*开始,由*/结束。第二个称为文档注释,也可以扩充到多行上。不过,它由 /*开始, 由*/结束。在本文中,许多 Java 编辑器都将 Java 注释显示为绿色。通常在每一个源代码的开头 都有注释行,以便为该类提供内部文档。有时候就像在 HelloWorldWideWeb 中一样,也可以在 方法的开头编写注释,如下面的代码中所示: / this class has one method named main 类中的 Java 代码通常由变量定义和一个或更多个方法组成。 HelloWorldWideWeb 示例没有 变量,但是它有一个名为 main 的方法。回想一下,调用方法是为了执行某操作以提供某项服务。 类都有一个名为 main 的方法,就像 HelloWorldWideWeb 一样,将类文件加载到内存中之 后就会自动调用此方法;main 方法是执行的对象。这意味着将 HelloWorldWideWeb.class 文件加 载到内存中之后,main 方法就开始运行。 方 法 由 方 法 头 开 始 , 方 法 头 类 似 于 先 前 显 示 的 类 头 。 下 面 的 代 码 由 一 个 方 法 头 开 始。 public static void main (String args) 编写方法头是为了标识该方法并描述它的某些特征。注意,在此头中 public、static 和 void 是关键字。这些关键字和该方法头的语法将在第 3 章和第 2 部分中介绍。目前需要知道 public 意味着任何其他程序均可调用此方法,该方法具有公有的可访问性;Static 意味着此方法与实例 无关;void 意味着该方法不会返回值。 此 main 方法包含一个单一语句,执行此语句即可显示您的消息。 System.out.printIn (“Hello World Wide Web“); 此语句与您在 Java 中看到的许多语句一样,也会调用另一个方法执行显示消息的任务。 System.out 是一个对象,它可以提供完成各种任务的方法。其中的一个方法 printIn 会显示传递 给它的文本。在此示例中,会将包含在圆括号中的称为参数的信息发送给 printIn 方法,该方法 随后会显示它。 由于该参数包含在引号之间(“Hello World Wide Web“),所以 Java 会将它识别为一个字符串 字面值。字面值是指调用的在一个语句中定义的某个值。 该参数带有一个分号,表明该语句结束。所有的 Java 语句均以分号结尾。 实际练习实用练习 1 (1) HelloWorldWideWeb.java 中包含的所有 Java 示例均可从 上下载。 第 2 章 Java 编程基础知识 23 (2) 在系统上创建一个名为 Chapter2Exercise1 的文件夹并将 HelloWorldWideWeb.java 复制 到此文件夹中。 (3) 使用教师推荐的软件编译并运行 HelloWorldWideWeb.java。 (4) 对 HelloWorldWideWeb.java 代码进行修改,以便将您的姓名显示在第一行上,将您的 课程名称和所在的班级显示在第 2 行上。 2.3 使用 Java 变量和数据类型 可声明一个变量来包含要包含数据的变量。变量是可以包含数据的内存位置的名称。例如, 可以编写下面的语句同时添加 2 个值。 a = b + c 在此示例中,a、b 和 c 都是变量。它们是包含数据内存位置的名称。例如,如果变量 b 包 含数字 2,c 包含数字 4,随后执行了此语句之后,a 就会包含数字 6。图 2-2 显示执行了该语句 之后的这 3 个变量。 图 2-2 包含数据的变量 所有的变量均有数据类型、名称和值。其中的每一特征均按照下面的列表进行定义在下面 的列表中: 数据类型。数据类型指定变量可以包含的数据的类型。与某些语言不同,Java 的 数据类型很特殊。例如,不能将包含小数点的数字存储到只存储整数值的变量中。下一 节将介绍特定的数据类型。 名称。变量名是由编程人员创建的、用来引用该变量的标识符。 值。每个变量均引用包含数据的一个内存位置。可以指定此值。如果您不为该变量 变量 b 变量 a 变量 c 内存 2 4 6 第部分 面向对象和 Java 基础知识 24 赋值,那么 Java 就会将默认值赋给它。数字变量初始化为零,字符变量初始化为 null, 布尔变量初始化为 false。null 是表示什么也没有的一个值。 2.3.1 声明和初始化变量 声明一个变量之前,必须指定该变量将使用的数据类型。Java 具有 8 个原语数据类型,这 些数据类型列在表 2-3 中。为了将它们与更加复杂的数据类型( 如类名)区分开来,将这些数据类 型称为原语数据类型,第 3 章将介绍更加复杂的数据类型。 表 2-3 Java 原语数据类型 分 类 类 型 值 范 围 大 小 不带小数位的数字 1.int +或 2.1 万亿 4 个字节 2.short +或 32,000 5 个字节 3.long +或 9E18 6 个字节 4.byte +或 127 7 个字节 带小数位的数字 5.double +或 1.79E308 8 个字节,15 个小数位 6.float +或 3.4E38 4 个字节,7 个小数位 其他 7.boolean true 或 false 8.char 任意字符 2 个字节 可使用前 4 个数据类型来以包含不带小数的数字数据(int、short、long 和 byte)。使用接下来 的 2 个数据类型以来包含带有小数的数字数据(double 和 float)。原语数据类型 boolean 只包含 2 个可能值中的一个:true 或 false。许多 Java 编辑器将这些值显示为蓝色;不过,从技术上讲布 尔值是常量而不是关键字。 对包含单一字符文本的变量使用原语数据类型 char。要显示具有一个以上字符的文本,请 使用 String 类,在后面的章节和第 3 章中将进行研究。下面的示例重点介绍 char、int 、double 和 boolean 数据类型及其用法。 要声明某个 Java 变量,可先编写数据类型,再编写要使用的名称。记住每个 Java 语句均以 一个分号结束。 char c; int i; double d; Boolean b; 接下来可以添加代码,以初始化变量,同时为每个变量赋值。下面的语句将字符值 A 赋给 变量 c,将整数值 1 赋给 i,将值 2.5 赋给 d,将值 true 赋给 b。注意字符字面值 A 使用单引号。 字符串使用双引号。 c = A; i = 1; d = 2.5; 第 2 章 Java 编程基础知识 25 b = true; 也可以编写代码,以便在一个语句中声明并初始化该变量。要这样做,请使用赋值运算符 的等号。此运算符会将等号右侧的值赋给在左侧命名的变量。例如,下面的语句声明前面的变 量,然后将它们初始化为指出的值: char c = A; int i = 1; double d = 2.5; Boolean b = true; Java 假定不带有小数的数字字面值( 如 1)的数据类型为 int。如果您要编写带有小数的数字字 面值,如 1.1,Java 就会假定数据类型为 double。这通常不会引起问题,除非您正在尝试初始化 带有字面值的 float 变量。随后必须在该字面值的后面写一个 F,告诉 Java 它的数据类型值是 float 而不是 double,如下面的示例中所示: float f = 1.2F; 可以在一个语句中声明具有同一数据类型的多个变量。例如,如果 x、y 和 z 的数据类型将 为 double,可以像在下面的代码中一样声明它们: double x, y, z; 您通常会使用变量保存数据。先编写数据类型,再为变量选择名称,从而声明变量。可以 在声明变量时就对它进行初始化,或者以后使用赋值语句对它进行初始化。 2.3.2 更改数据类型 查看表 2-3 中列出的原语数据类型,注意 6 个数字数据类型具有不同的容量。例如,数据 类型为 byte 的变量只可以保存的最大值为 127,但是数据类型为 int 的变量可保存的则具有最大 值为 2.1 万亿的容量。同样,数据类型为 float 的变量的容量为 3.4 E38,但是数据类型为 double 的变量的容量为 1.79 E308,后者的容量显然更大。 编写算术表达式(如 a = b + c)时,Java 会假定该表达式中的所有变量的数据类型均相同。如 果它们不相同,Java 就会在内部将容量较小的那些变量的数据类型提升为该表达式中使用的容 量较大的变量的数据类型。在示例 a = b + c 中,假定变量 a 和 c 的数据类型为 int,但是声明 b 的数据类型为 double 并使用下面的代码对它进行了初始化: int a; double b = 3; int c = 5; a = b + c; 因为变量 b 和 c 具有不同的数据类型,所以 Java 会在内部将变量 c 的数据类型 int 提升为数 据类型 double,然后完成加法操作。现在所得的结果的数据类型为 double。不过,在完成加法 操作之后,Java 会试图将结果赋给变量 a,a 的数据类型为 int。由于数据类型 int 的容量要比 第部分 面向对象和 Java 基础知识 26 double 的容量小得多,所以编译器会生成一条错误消息,表明可能由于该语句而导致结果不准 确。这意味着所得的值中可能缺少重要数字。 可以使用一种称为强制转换的技术覆盖该编译器的缺点。要将一个值强制转换为另一种数 据类型,可将所需的数据类型括在圆括号内,然后写在包含该值的变量的左侧。例如,可以将 变量 b 的内容从 double 强制转换为 int,方法是重新编写下面的加法语句: a = (int) b + c; 强制转换操作(int)会将变量 b 的内容从数据类型 double 强制转换为数据类型 int,然后完成 加操作并将结果赋给变量 a。变量 b 实际上没有发生变化;为了进行计算暂时将它的内容给了数 据类型 int。注意假设您能承受此操作中出现的任何误差。 Java 编译器已经警告过您存在潜在性 错误,您已经使用强制转换接受了此潜在性错误。 2.3.3 使用常量 声明常量通常很有用,常量是具有不变值的一个变量,它不会改变。使用常量以包含某些 值,如公司名称、税务 ID 或电话号码,它们不变动或很少变动。 用于声明常量的代码与用于声明变量的代码相同,只是前者在数据类型前面编写有加上关 键字 final,如下面的代码所示。但是,必须在声明它们的同一个语句中对常量初始化。按照管 理约定,应该用大写字母编写常量名称。如果名称由一个以上的单词组成,还应该用带下划线 的字符将单词分开。例如,要为 7%的销售税率声明一个常量,则可编写: final double SALES_TAX_RATE = 7.5; 此代码声明一个名为 SALES_TAX_RATE、数据类型为 double 的变量,将它初始化为 7.5, 并使它成为 final,表示不能更改该值。 2.3.4 使用引用型变量 您已经知道 Java 变量保存数据。实际上,Java 有两种变量:原语变量和引用变量。到目前 为止,您已经学习了原语变量。声明的原语变量的数据类型为 8 种原语数据类型中的任意一种, 而且实际上包含有在其中放置的数据。 相比较而言,引用变量将类名用作数据类型并引用或指向该类的一个实例。引用变量实际 上不包含数据;但是它会引用包含数据的某个类的一个实例。例如,您可能已经注意到字符串 数据( 字符集合)不属于 8 种 Java 原语数据类型中的任意一种。但是字符串数据包含在 String 类 (Java 提供的一个类)的一个实例中。 在本章的最后一节中将介绍 Java 数组,数组包含数据且需要使用引用变量来访问。 就像声明原语变量那样声明 String 引用变量,首先指定数据类型为类名 String,然后指定要 使用的变量名称。可以编写下面的代码,从而声明数据类型为 String 的引用变量 s: String s; 第 2 章 Java 编程基础知识 27 此代码会创建一个名为 s 的变量,但是不会将它初始化为一个值。它也不会指向一个 String 实例。实际上,它不会指向任何地方,而且也不会有值。可以将某个值赋给 String 变量,就像 赋给原语变量值一样。下面的代码会将字符“Hello Again”赋给名为 s 的 String 变量: s = “Hello Again“; 也可以声明一个 String 引用变量并执行一步操作为它赋值,就像为原语变量赋值一样: String s = “Hello Again“; 先前您编写了下面的代码声明了名为 c 的一个 char 原语变量: char c = A; 然后在本节中您知道了如何编写下面的代码声明一个 String 引用变量: String s = “Hello Again“; 注意,变量 c 是包含字符值A 的一个原语变量,而变量 s 是指向包含“Hello Again”的 String 类的一个实例的引用变量。图 2-3 以图形的形式来显示此区别。 图 2-3 对照原语变量和引用变量 图 2-3 显示实际上包含A的变量 c,但是变量 s 指向或引用包含“Hello Again”的 String 类 的一个实例(再次提请您注意,字符字面值使用单引号,但是字符串字面值使用双引号) 。 当您想要对多个值进行比较时,原语变量和引用变量之间的区别尤为重要。另外还可以使 用引用变量为引用它们的实例调用方法。第 3 章更加详细地研究这些方法并演示如何调用 String 类中的方法。 2.3.5 创建一个 Java 类来演示变量 用来演示声明变量和常量的 Java 类列在程序清单 2-2 中,名为称为 VariableDemo.java 的一 个 Java 类列在图 2-6 中。 程序清单 2-2 VariableDemo.java 列表 public class VariableDemo public static void main(String args) / declare variables int i = 1; double d = 2.5; boolean b = true; final double SALES TAX RATE = 7.5; String s = Hello Again“; / display variable contents System.out.Println(“c =“ + c); System.out.println(“i =“ + i); System.out.println(“c =“ + d); System.out.println(“b =“ + b); System.out.println(“SALES TAX RATE =“ + SALES TAX RATE); System.out.println(“s =“ + s); 就像在 HelloWorldWideWeb 中一样,VariableDemo 类由类头、一个打开的花括号、main 方 法头开始,然后是表明 main 方法开始的另一个打开的花括号。main 方法包括声明和初始化 4 个 原语变量、1 个原语常量和 1 个 String 引用变量的代码。 声明了变量并为它们赋值之后,即可添加语句以显示它们的值。 System.out.println(“c = “ + c); System.out.println(“i = “ + i); System.out.println(“c = “ + d); System.out.println(“b = “ + b); System.out.println(“SALES_TAX_RATE = “ + SALES_TAX_RATE); System.out.println(“s = “ + s); 这些语句调用 System.out 对象中的方法 println。调用方法意味着要向它发送消息询问它是 否要执行。要编写一个调用某方法的语句,可编写对该类或对象的一个引用(System.out),紧接 着写一个句号或一个点,然后添加您要使用的方法名(println)。 调用向其发送一个或多个称为参数的值(括在圆括号内) 的某方法时,上面的第一个语句通常 会发送下面的参数: (“c = “ + c) 值“c = “只是一个 String 字面值,这里使用的+ 号是连接运算符,它可以将该字面值与变量 c 的内容连接起来一同显示。调用 println 方法之前,连接运算符会自动将数字或布尔值转换为字 符串值。 VariableDemo.java 的输出如下: c = A i = 1 c = 2.5 b = true 第 2 章 Java 编程基础知识 29 SALES_TAX_RATE = 7.5 s = Hello Again 实际练习实用练习 2 (1) 在系统上创建一个名为 Chapter2Exercise2 的文件夹。 (2) 在 上找到名为 Chapter2Examples 的文件夹,在其中查找 VariableDemo.java,然后将它复制到您在第 1 步中创建的 Chapter2Exercise2 文件夹中。 (3) 使用教师推荐的软件编译并运行 VariableDemo.java。 (4) 向 VariableDemo.java 中添加代码以声明和初始化数据类型为 short、long、byte 和 float 的原语变量。然后添加代码以显示这些变量的内容。记住,Java 假定带有小数位的字面值的数 据类型为 float,不带小数位的字面值的数据类型为 int。 (5) 添加代码以将 float 变量的内容赋给 long 变量。记住在执行此赋值操作时需要进行强制 转换。 2.4 使用 Java 进行计算 Java 使用熟悉的算术运算符加、减、乘和除(+、*、/),其他的编程语言中也使用这些 运算符。同样,Java 使用圆括号将一个表达式的几部分组合到一起并根据标准的代数规则建立 优先地位。除此之外,Java 还使用余数运算符(%)(也称为取模运算符)生成两个整数相除所得的 余数。这些算术运算符列在表 2-4 中。 表 2-4 Java 算术运算符 运 算 符 描 述 示 例 结 果 + 加 11 + 2 13 减 112 9 * 乘 11 * 2 22 / 除 11 / 2 5 % 余数 11 % 2 1 注意,这些算术运算符不包括取幂。Java 提供的一个 Math 类具有用于完成取幂、四舍五入 和许多其他任务的多个方法。表 2-5 列出 Math 类的某些方法。 表 2-5 所选的 Math 类方法 方 法 描 述 abs(x) 返回 x 的绝对值 max(x,y) 返回 x,y 的较大值 min(x,y) 返回 x,y 的较小值 Powx(x,y) 返回 y 的 x 次幂 第部分 面向对象和 Java 基础知识 30 Random() 返回 0 和 1 之间的随机数 Round(x) 返回最接近 x 的整数值 sqrt(x) 返回 x 的平方根 要调用其中的一个方法,请依次编写该类的名称(Math)、一个句号、该方法的名称,然后编 写所需的所有参数。完成计算之后,Math 类会返回最终得到的值。例如,下面的语句计算 10 的平方根: double answer = Math.sqrt(10) 执行此语句时,会出现以下 4 种情况: 创建一个数据类型为 double 的变量名为 answer 的。 调用 Math 类中 sqrt 方法并将参数 10 传递给它。 sqrt 方法计算该参数的平方根并返回它。 返回的值被赋给变量 answer。 列在程序清单 2-3 中的 Java 类 ComputationDemo.java 演示算术运算符和 Math 类中的 2 个方 法的用法。 程序清单 2-3 ComputationDemo.java 列表 public class ComputationDemo public static void main(String args) / illustrate arithmetic operators int a = 11; int b = 2; int c = 4; System.out.println(“a =“ + a); System.out.println(“b =“ + b); System.out.println(“c =“ + c); System.out.println(“a + b =“ + (a + b); System.out.println(“a - b =“ + (a - b); System.out.println(“a * b =“ + (a * b); System.out.println(“integer division a / b =“ + (a / b); / cast a System.out.println(“a % b =“ + (a % b); / illustrate Math class methods System.out.println(“c to b power =“ + Math.pow(c,b); System.out.println(“square root of c =“ + Math.sqrt(c); 第 2 章 Java 编程基础知识 31 与以前的示例类似,此类具有一个名为 main 的方法,向内存中加载该类时即开始执行此方 法。main 方法由声明和初始化变量的代码开始,然后显示名为 a、b 和 c 的 3 个原语变量,其数 据类型均为 int。 接下来是调用 println 方法,显示包含变量 a 和 b 的表达式的计算结果的 3 个语句。这些语 句中的变量格式与您在以前的示例中所看到的格式不同,因为这些参数实际上包含用来计算值 的算术表达式。例如,第一个语句中的参数是(“a + b = “ + (a + b) )。Java 首先计算和(a + b),将 此结果与字符串字面值“a + b = “连接起来,然后将连接的字符串传递给 println 方法,该方法随 后就会显示它。 接下来是演示整数相除的一个语句。 System.out.println(“integer division a / b = “ + (a / b) ); 变量 a 包含 11,变量 b 包含 2,所以正确的结果是 5.5。不过,因为此语句中的 2 个变量的 数据类型均为 int,所以计算结果的数据类型也为 int,显示的结果的整数值为 5 舍弃了答案 的小数部分。要保留该答案的小数部分,必须将这 2 个变量的数据类型强制转换为 double 或 float。下面的示例使用数据类型 double。此语句包括编写在算术表达式中 a 和 b 的左侧的强制转 换 double(double)。此强制转换会将这 2 个变量的内容转换为数据类型 double 以执行计算。因为 这 2 个变量的内容的数据类型现在暂时都是 double,因此相除的结果的数据类型也是 double, 而且保留了小数位。 System.out.printIn(“double a / b = “ + (double) a / (double) b); 下一个语句演示余数或模数相除。 System.out.printIn(“a % b = “ + (a % b) ); 此语句用 a (11)的内容除以 b (2)的内容并得到余数(11 除以 2 等于 5,余数为 1)。 ComputationDemo.java 中的最后 2 个语句演示如何使用 Math 类中的 2 个方法。 System.out.println(“c to b power = “ + Math.pow(c,b) ); System.out.println(“square root of c = “ + Math.sqrt(c) ); 第一个语句调用 pow 方法,该方法将变量 c 的内容(4)作为变量 b 的内容(2)次幂。第二个语 句调用 sqrt 方法,该方法将计算并返回变量 c 的平方根。 此代码的输出如下: a = 11 b = 2 c = 4 a + b = 13 a b = 9 第部分 面向对象和 Java 基础知识 32 a * b = 22 integer division a / b = 5 double division a / b = 5.5 a % b = 1 c to b power = 16.0 square root of c = 2.0 实际练习实用练习 3 (1) 在系统上创建一个名为 Chapter2Exercise3 的文件夹。 (2) 在 上找到名为 Chapter2Examples 的文件夹,在其中查找 ComputationDemo.java,然后将它复制到您在第 1 步中创建的 Chapter2Exercise3 文件夹中。 (3) 使用教师推荐的软件编译并运行 ComputationDemo.java。 (4) 用于计算预期金额现值的公式为: presentValue = futureAmount / (1 + annualInterestRate)的 yearsInFuture 次幂 a. 声明并填充以下变量( 认真选择数据类型) : presentValue = 0 futureValue = 1000 annualInterestRate = .085 yearsInFuture = 10 b. 向 ComputationDemo.java 中添加语句以计算和显示 presentValue。您将需要使用 Math 类 中的 pow 方法求幂。注意, pow 方法会接受和返回数据类型 double。 除了代数运算符之外,Java 还具有一些用于编写快捷方式代码的特殊运算符。 递增加(+)和 减递减( )运算符顾名思义, 加一或从一个变量中加 1 或者减一 1。演示一下,下面的 2 个语 句会产生相同结果: i = i + 1; / add 1 to i 和 +i; / add 1 to i 同样,要进行演示,可编写: i = i 1; / subtract 1 from i 或 i; / subtract 1 from i 另请注意,+或 可以放到变量的前后。但是,在 assignment 赋值语句中,这些运算符 的位置可以有所不同。如果运算符在变量的前面,它就会在赋值之前加或减。例如,下面代码 第 2 章 Java 编程基础知识 33 中的第一行加先给变量 i 加 1,然后将值赋给 j,因此 i 和 j 具有相同的值。但是,第二行首先将 i 的值赋给 j,然后加给 j 加 1,因此它们具有不同的值。 j = +i; / i and j have the same value j = ji+; / i and j have a different value Java 还支持配合使用赋值运算符(=) 与算术运算符(+、*、/)来创建赋值运算符。例如, 如果您想向名为 total 的变量中加 5,则可编写以下任一个语句: total = total + 5; total += 5; 2.5 编写决策判定语句 编写商业业务应用程序时,您通常会想着确定某条件是否为真,然后再根据作出的决定来 采取某些措施。例如,在信用卡处理应用程序中,您可能想查看是否已经达到或超出了该卡的 信贷限额,如果果真存在这种情况,则请拒绝收费。编写决策语句判断语句,以评估条件并根 据评估结果执行语句。 Java 提供 3 种用于编写决策语句判断语句的方式:if 语句、 switch 语句和条件运算符。Java if 语句与其他编程语言中所用的 if 语句类似,可以对某个表达式求值,如果该表达式为 true,则 执行一个代码块(包含一个或更多个语句 );如果该表达式为 false,则执行另一个代码块。Java switch 语句与某些其他语言中所用的 select 语句类似,就像一个多路径 if 语句。它为某个变量求 出多个值,然后根据正在求值的变量的内容执行多个代码块中的一个代码块。条件运算符实际 上是 if 语句的快捷版本简写形式。后面的章节中将演示这 3 种方式。 2.5.1 编写 if 语句 Java if 语句询问圆括号内的逻辑表达式,并确定该表达式是 true 还是 false。表达式经常会 使用逻辑运算符对 2 个值进行比较,以查看它们是否相等或者是否其中的一个值小于另一个值。 在先前提到的信用卡处理示例中,要查看信用卡的余额是否大于信贷限额,表达式为 (creditCardBalance = creditLimit)。其他的表达式示例为(examScore passingScore)、(studentAge 大于 = 大于等于 来表示不等于。 Java 的 if 语句有 2 种格式。第一种格式为表达式求值,如果该表达式为 true,则执行某个 代 码 块 。 第 二 种 格 式 称 为 if-else 语 句 , 它 会 为 表 达 式 求 值 , 如 果 该 表 达 式 为 true, 则 执 行 一 个 代码块,如果该表达式为 false,则执行第二个代码块。这 2 种格式的逻辑显示在图 2-4 和图 2-5 中。 图 2-4 if 语句逻辑 图 2-5 if-else 语句逻辑 这 2 个语句的格式显示在图 2-6 和图 2-7 中。 表达式 true false 表达式为 true 时 要执行的代码块 表达式 trueelse 表达式为 true 时要 执行的代码块 表达式为 false 时要 执行的代码块 第 2 章 Java 编程基础知识 35 图 2-6 if 语句格式 图 2-7 if-else 语句格式 显示在程序清单 2-4 中的是 Java 类 IfDemo.java 演示 if 语句的这 2 种格式。 程序清单 2-4 IfDemo.java 列表 public class IfDemo public static void main(String args) iht i = 1; / simple if if (i 0) System.out.println(“i 0“); / if using a block of code if (i = 1) System.out.println(“i equals 1“); 该表达式的值为 true 或 false 该表达式的值为 true 时要 执行此代码块中的语句 if (expression ) execute this block if the expression is true 该表达式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成都市东辰国际学校2026届化学九上期中监测试题含解析
- 2026届山东省青岛市第十六中学化学九上期中考试试题含解析
- 贵州省六盘水市水城县文泰学校2026届九年级化学第一学期期中调研试题含解析
- 2026届内蒙古自治区鄂尔多斯市准格尔旗化学九年级第一学期期中质量跟踪监视试题含解析
- 江苏扬州市梅岭中学2026届九年级化学第一学期期中考试试题含解析
- 2026届辽宁省葫芦岛市六校联考化学九上期中考试试题含解析
- 2026届广东省惠州光正实验九上化学期中调研试题含解析
- 2025工程施工合同补充协议范本
- 2025承建工程皮卡车租赁合同
- 2025停薪留职协议合同书
- 业主直接参与物业管理区域的物业管理
- 《运动医学与康复》课件
- 2025年自建房施工合同书 (包工不包料 C款)
- 军事心理战试题及答案
- 2025年北京市第一次普通高中学业水平合格性考试历史试题(含答案)
- 二年级上册数学《观察物体》教学设计
- 检验科消防安全知识培训
- 心肾综合征诊疗实践指南解读
- 中国古代数学家求数列和的方法课件-高二上学期数学人教A版选择性
- 二氧化碳驱油机理及其在石油工业的应用
- 护理三基试题汇编1000题(含答案)
评论
0/150
提交评论