java编程基础自测题

java编程基础自测题Java 入门 5 JAVA 语言基本语法 摘要 本章中主要通过详尽的实例 配以合理的练习 让读者了解 掌握 Java 语言的基本语法 通过本章的学习 读者应能学会 Java 程序的结构 变量 方法 运算符 表达式等 以便今后编写 Java 程序时更加得心应手 2002 08 29 14 09 18 By Wing 出处 fjxufeng 本章目标 本章中主要通过详尽的实例

大家好,我是讯享网,很高兴认识大家。



Java入门(5) JAVA语言基本语法
摘要

  本章中主要通过详尽的实例,配以合理的练习,让读者了解、掌握Java语言的基本语法。通过本章的学习,读者应能学会:Java程序的结构、变量、方法、运算符、表达式等,以便今后编写Java程序时更加得心应手。

(2002-08-29 14:09:18)

By Wing , 出处:

fjxufeng



  本章目标:

  本章中主要通过详尽的实例,配以合理的练习,让读者了解、掌握Java语言的基本语法。通过本章的学习,读者应能学会:Java程序的结构、变量、方法、运算符、表达式等,以便今后编写Java程序时更加得心应手。

  5.1 JAVA程序结构

  传授新知

  在上一章中,我们就已经看到了两个使用Java语言编写的程序实例,不仅编译、运行了它,而且还对这两个程序使用“逐层解析法”做了详细的分析,相信各种应该对Java编写的程序有了一定的了解。

  在本小节中,我们就更系统地说说Java程序的结构。下面我们再来看一个Java程序。

  源程序:TheTestApplet.java

  这是一个十分有代表性的一个程序,下图直观地标出了这个Java程序的结构:

  图5-1 Java程序结构示意图

  也就是说,通常一个Java程序可以分成五个部分:

  1."import"部分

  也就是输入语句部分,它相当于C/C++语言中的include语句。在Java语言中,import语句是用来通知Java编译器,在这个程序中正在使用当前类外部的其它类。

  在本程序中,我们定义的是一个叫TheTestApplet的类,它是一个小应用程序类,因此必须通知编译器我们的类是在已定义的Applet(小应用程序类)的基础上定义的。(也就是TheTestApplet类是Applet类的子类,Applet类是TheTestApplet类的超类。

  这一个部分应在程序的最开始部分。

  注意:

  import语句在功能上与C/C++语言中的include语句相同,但请大家注意它们之间有两大不同:

  1) C/C++语言中用include是包含外部文件,所以include后面应是文件名,而import是输入外部类,所以import后面应是类名;

  2) 与include不同,import语句后面应该跟上“;”,否则会出错。

  2. "class define"部分

  也就是类定义部分。它用于给类命名(如下粗体字部分所示):

讯享网

  另外,如果你的类是建立在另一个类的基础上(也就是子类),那么就必须在类定义时告诉Java编译器。(如下粗体字部分所示):

 
 

  注:extends,扩展。说明TheTestApplet是Applet类的扩展。

  一些提示:

  Applet类是所有小应用程序的基础,也就是说,Applet是它们的超类;所有的小应用程序都是Applet类的子类。

  3. "field"部分

  这个部分也叫做域,它是用于定义类属于类的数据(变量,具体将在下一小节说明)。这些数据是用来描述对象的状态,方法就是对这个数据进行操作的。

  一些提示:

  请不要直接从“filed”字面上去理解,大家只要记住它就是类的数据,就是类中的变量就行了。

  4. "comment"部分

  做为一个好的程序员,就应该知道在程序中适当地加上注释语句是十分重要的。请你一定要养成给自己的程序加注释的习惯,这样有助于别人看懂你的程序,也有助于“年代久远”之后自己阅读自己的程序。

  一些提示:

  也许有些读者会不以为然,但请您一定要记住:能方便地读懂的程序才谈得上可维护性,而可维护性对于一个程序的生命是至关重要的因素之一。

  在Java中加入注释语句很简单,与C++相同,它支持两种格式:

  1) 在注释的前面加上“//”;

  2) 在注释的前面加上“/*”,结束加上“*/”。

  注意:

  如果使用“/*”、“*/”来加注释,请一定记住,不能嵌套使用它们!如:

讯享网

  对于这个注释语句,编译器将理解成为:

 
 

  comment over */成了合法的程序,这样就会出问题了。请大家一定注意。

  5. "methods"部分

  这部分就是方法部分,用为为类定义它的“骨血”---方法,方法指引类进行具体的活动和操作。关于方法的更多内容,我们将在本章的后面几个小节中详细说明。

  自测练习

  练习一:阅读本节中的源程序TheTestApplet.java,回答以下问题:

  1) TheTestApplet.java是java __________。

  a.应用程序 b.小应用

  2) 要运行这个程序需要如何做?(请详细说明)

  3) 这个程序的输出是什么?

  练习二:修改TheTestApplet.java程序,使其满中以下要求:

  1) 使程序输出“Haha,I can modify java program!”。

  2) 将TheTestApplet类的名字改为AnotherApplet类。

  练习三:阅读以下源程序,并回答问题:

 
 

  1) 这段程序中有两处错误,请指出:

  2) 这段程序中,属于“field”部分的语句有:

  3) 属于“methods”部分的语句是:

  练习答案

  练习一:

  1)a 这段程序是Java小应用程序(Java Applet)。

  2)首先,创建TheTestApplet.java文件,将程序输入;

  接着,执行javac TheTestApplet.java,编译它;

  再次,编辑一个HTML文件,使其包含以下内容:

 
 

  最后,使用AppletViewer或IE查看这个HTML文件。

  3) 这个程序输出如下图所示:

  图5-2 程序输出示意图

  练习二:

  1) 只需将programOut=”This is a test!”;这一行改为:

 
 

  2) 先将public class TheTestApplet extends Applet这一行改为:

 
 

  然后将存储这个程序的文件名改为AnotherApplet.java就行了。

  练习三:

  1) 错误在于,下面两句后面未加分号:

java编程基础自测题
 
 

  2) 属于“field”部分的语句是:

 
 

  3) 属于“methods”部分的语句是:

 
 

  5.2 变量

  传授新知

  刚才,我们系统地了解了Java程序的结构,现在我们一起来学习新的老概念----变量。之所以说新,是针对我们这本书来说;而它又是广泛出现在各种程序设计语言教材中的一个术语,所以可谓之旧。

  如果有程序设计经验的人,应该不需要我再多说,都能够很清楚什么叫变量。在Java语言中,对象就是由数据及对这些数据的操作组成的。

  5.2.1 什么是变量

  变量就是这些数据的容器,在Java语言中,它也被称为域。我们都知道,在计算机中所有的数据都是存储在内存中的,形象地说,变量就是在内存中预分配一个空间,这个空间里可以根据需要存放不同的数据。下面我们通过几张图简单地说明一下这个问题:

  1) 定义变量:

  定义变量,就象在内存中拿到一块空间,然后标上自己的名字(在下图中是A),这个名字就是变量名。

  图5-3 定义变量示意图

  2) 给变量赋值:

  给变量赋值,就象将一个数、或一个字符(在下图是一个数:5),放到刚才分配的空间中去。以后访问A就可以得到5这个数。

  图5-4 给变量赋值示意图

  3) 修改变量的值

  修改变量赋值,与给变量赋值类似,只过是这个变量里本身就存在一个值,新的一个值是取而代之。

  图5-5 修改变量的值示意图

  5.2.2 定义变量

  在Java语言中,使用变量之前,必须先定义变量的类型和名字。定义变量也可以称为“声明变量”。在本章中的第一个程序里,我们就看到过了一个定义变量语句:

 
 

  变量声明的格式是:

  变量类型 变量名

  也就是说,String programOut语句定义了一个String型的变量,(关于变量类型,我们将在下一章中详细说明)这个变量的名字叫做programOut。

  注意:

  请别忘了在变量声明的后面一定要加上“;”,表示一句结束,否则将出错。

  知道了变量声明的格式之后,就只剩下两个问题了:

  1. 变量名的取名规则:

  变量名是不是可以随便取呢?不,虽然在Java语言中关于变量名的限制并不多,但也并意味着可以随便取。

  1) 变量名可以由字母字符、数字、标点组成;

  2) 变量名必须以字母字符、“$”(美元符号)、“_”(下划线)开头;

  3) 变量名不能与Java语言的保留字重名;

  一些说明:

  保留字是指被Java使用掉的字母组合,由于在程序中有特殊的意义,所以不能用作变量名。如Applet就不能做为变量名。

  注意:

  有两个问题要特别强调一下:

  1) Java语言的变量是区分大小写的,progarmOut与ProgramOut两个变量名是不同的,请一定注意;

  2)以$符开始的变量是合法的,但是不鼓励的。

  2. 应该在什么地定义变量:

  在Java语言中,只要在同一个代码段没有同名的变量,就可以在程序中的任何一个地方定义变量。一个代码块就是两个相对的“{”、“}”之间的部分。

  不过,做为一个良好的编程习惯,您应该在使用变量的代码块的开始处定义变量。这样利用程序的维护。这一点,当您看了“变量的作用范围”小节就会深有体会的。

  5.2.3 为变量赋值

  定义了变量之后,当然就要使用,也就是为变量赋值。在Java语言中,与所有的程序设计语言一样,提供了很简单的手段为变量赋值:

  变量名 = 值

  下面就是几个为变量赋值的例子:

 
 

  在Java语言中,也允许你在一个语句中完成变量的定义与赋值:

  变量类型 变量名 = 值

  这样,上面的示例就可以改为:

 
 

  5.2.4 变量的作用范围

  变量的定义、赋值都比较简单,而在变量这一概念中,有一个十分重要的知识点,也是最难理解的知识点,那就是“变量的作用范围”。

  一个变量的“影响力”是有限的,它的“影响力”取决于这个变量在什么位置被定义。在它的“影响力”到达的地方,程序就可访问它;而在它“影响力”无法到达的地方,它就像不存在一样。

  我们把变量的“影响力”称为作用范围。那么如何判断一个变量的作用范围呢?请你记住一句话:每个变量只在定义它的代码块中(包括这个代码块包含的代码块)生效。(一个代码块就是两个相对的“{”、“}”之间的部分)

  一些提示:

  一个变量的作用范围外可以有一个与它同名的变量名存在,它们虽然同名,同在一个程序,却可以相安无事的共存。

  下面,我们通过一个实践来体会一下变量的作用范围。

  实例说明

  首先,我们输入以下源程序,编译后运行它,然后观察输出结果。

  源程序:VariableScope.java

 
 

  这个程序结果如下图所示:

  图5-6 VariableScop类执行结果

  在这个程序中,我们一共定义了三个变量:

  1) preString:它所在的代码段是整个VariableScope类;

  2) printaddString:第一个printaddString所在的代码段是printOne方法中;

  3) printaddString:第二个printaddString所在的代码段是printTwo方法中;

  一些提示:

  在printOne方法与printTwo方法中都定义了一个变量printaddString,但它们并未冲突,工作得好好的。

  你记得吗,我们曾经说过,为了程序更好维护,应把变量定义放在块的最前面,这样利于大家分清这个变量所在的块,就不容易看错。

  自测练习

  1) 请说明下面变量名是否合法,不合法的说明理由:

  Xing ___________________________________________

  @Ming _________________________________________

   __________________________________________

  _AGE __________________________________________

  3fox ___________________________________________

  $weight _________________________________________

  2) 写出定义一个类型的int的变量Age,并赋值9的程序段:

  如果只有一行代码,该如何写:

  3) 在Java语言中,变量也叫做 __________。

  a.方法 b.函数 c.状态数据 d.域

  4) 以下关于变量作用范围的叙述,正确的是____________。

  a. 是指变量可存数据的最大数量; b.是指变量中可存储数据的最大范围;

  c.变量范围是包含这个变量定义的最近的一对大括号之间的代码段。

  5) 本节实践说明部分的那段程序中,有三个变量,请分别标注出它们的变量作用范围。

  练习答案

  1) Xing:合法; @Ming:不合法,变量名不能以“@”开头;

   :不合法,变量名不能以“<”开头; _ AGE:合法;

  3fox:不合法,变量名不能以数字开头; $weight:合法

  2) 使用标准的方法,应该为:

 
 

  也可以使用一行来表示:int Age = 9;

  3) d 变量也叫做域;

  4) c 变量的作用范围是指它能够生效的范围;

  5) 如下图所示:

  图5-7 变量作用范围

  5.3方法

  传授新知

  说完了变量,现在讲一个“旧酒新瓶”的概念---方法。它是“面向对象”引入的术语,它与其它非面向对象语言的函数(function)十分接近,但又有不同。下面我们就一起来学习一下。

  5.3.1 什么是方法

  方法是Java程序的灵魂,在Java中,方法就像C、C++、Pascal等程序设计语言里的函数一样,小应用程序、应用程序中的所有操作都是由方法来完成的。

  使用一个形象的比喻,变量与方法就象是构建Java程序这一伟大建筑所使用的砖和瓦,是它们最终构成了Java的程序。

  方法包含两个部分:

  1) 声明:用来说明方法的相关信息;

  2) 体:方法的实际内容。

  5.3.2 定义一个方法

  在前面的Java程序中,我们其实已经见过方法的定义了。下面我们就以本章第一个示例程序TheTestApplet中的displayMessage方法的定义为例,观察一下“方法定义”的语法结构与组成成分。

  图5-8 “方法”的结构示意图

  在这里,我们不讨论方法体,而主要分析方法的声明,让大家明白如何定义的一个方法、更加明白和更解Java语言程序。

  现在我们一起来认真分析一下方法的声明部分:

 
 

  方法声明的格式是:

  访问说明符 [修饰符] 返回值类型 方法名 ([参数列表])

  注:其中用“[]”括起来的部分是可选的。

  下面,我们就逐个地做一简单的说明:

  1.访问说明符

  在方法的定义中,第一个部分是“访问说明符”。顾名思义,它就是用来定义谁能够访问这个方法。在Java语言中提供了四种访问说明符:

  1) public

  “public”这个单词的意思是:公众的、公用的。顾名思义,如果一个方法将其访问说明符定义为public,那么这个方法能够被所有的外部类访问。

  一些说明:

  在此,外部类指的是这个方法所在类以外的类。

  2) protected

  “protected”这个单词的意思是:受保护。顾名思义,如果一个方法将其访问说明符定义为protected,那么就不是所有的外部类都能够访问这个方法,因为这个方法是受保护的,只有外部类是这个方法所在类的子类才能访问它。

  3) private

  “private”这个单词的意思是:私人的、私有的。如果一个方法的访问说明符选用了private的话,那么所有的外部类都无法能够访问这个方法。这是最严格的保护。

  4) default

  这是最特殊的一种访问说明,如果一个类与该方法所在类同属一个包,那么就可以访问这个方法。

  最后,我们通过一幅图来说明:

  图5-9 访问说明符示意图

  在我们前面的例子中,dispalyMessage方法使用了public这个访问说明符,说明它可以让任何外部类访问。

  2.修饰符

  修饰符在方法的定义中是可选项,用来为方法设置一些特珠的属性,由于它比较抽象,而且在初学Java时并不常遇到它们,所在在此我们暂时跳过。

  在前面的例子中,并没有定义修饰符。

  3.返回值类型

  当一个方法被调用时,它可以返回一个值给该方法的调用者。我们可以通过定义方法的“返回值类型”来规定它返回的值的数据类型。这个数据类型可以是任何一个有效的Java数据类型(关于数据类型,请参见下一章),或者void。

  如果象本例中一样,返回值类型为void,则说明这个方法调用后不返回任何值。

  4.方法名

  就象要为类定义类名,要为变量定义变量名一样,我们也需要为方法命名。象本例中,方法名是:displayMessage。

  方法名的起名规则与变量名一样:

  1) 方法名可以由字母字符、数字、标点组成;

  2)方法名必须以字母字符、“$”(美元符号)、“_”(下划线)开头;

  3)方法名不能与Java语言的保留字重名。

  有一点需要提醒您注意,为了使你的程序更容易维护,请取一个容易通过名字猜出作用的方法名,或者在方法定义的前面加上适当的注释。

  一些说明:

  在Java语言中,允许许多方法共用一个名字,我们将在遇到这种情况时做详细的说明。大家现在只要有这样的印象就可以了。

  5.参数列表

  参数列表在方法的定义中也是可选项,它的作用与函数的参数类似。您可以通过参数列表将一些数据传递给方法。具体的用法与功能,我们会在以后的章节中详细说明。

  一些说明:

  对于一个方法,还有一个特殊的定义,那就是“签名”,它是由给定方法的名字和参数组成的。如本例中的dispalyMessage方法的签名就是:

 
 

  其实,就是将方法体、分隔符去掉,就可以得到一个方法的“签名”了。就象人们使用人的签名确定一个人一样,一个方法的签名也就确定了一个方法。

  5.3.3方法的类型

  根据“方法”完成的工作性质,通常可以分为三类:

  1)“转换”型:调用这种方法,将修改内部变量的值;

  2)“访问”型:调用这种方法,将返回内部变量的值;

  3)“效果”型:调用这种方法,通常不返回任何值,而是执行了某个动作,例如向屏幕打印一些信息。

  那么,大家以为刚才我们举的这个例子:displayMessage是哪一种类型的方法呢?对,它是“效果”型的方法,它并未修改什么变量,而是完成“向屏幕输出字符”这一动作。

  自测练习

  1) 方法定义中不包含 ___________ 部分。

  a. 方法名 b. 访问说明符 c. 方法类型 d. 参数列表

  2) 在Java中,方法同名可以吗?__________。

  a. 可以 b. 不可以

  3) 如果想让一个方法只能够被子类访问,应该使用访问说明符 ___________定义。

  a. public b. private c. default d. protected

  4) 如果想让一个方法不能被任何外部类访问,应使用访问说明符 ___________定义。

  a. public b. private c. default d. protected

  5) 下面这一个方法,它是_________型的方法。

 
 

  a. 转换型 b. 效果型 c. 访问型

  6) 阅读第5题的源代码,回答以下问题:

  ① 这个方法的访问说明符是什么? ____________________________________

  ② 这个方法的返回值类型是什么? ____________________________________

  ③ 这个方法的方法名是什么?________________________________________

  ④ 这个方法是否有参数列表?________________________________________

  ⑤ 请写出这个方法的“签名” _______________________________________

  练习答案

  1)c 方法类型并不在方法定义时指出;

  2)a 在Java中是允许这样的情况出现,但有一些特殊的要求;

  3)d 定义其为ptotected,这样就只有子类才能访问它了;

  4)b 使用private,使这个方法成为私有的,这样别的类就无法访问了;

  5)b 这个方法实现的是执行一个动作,属于效果型的。

  6)① 访问说明符是:public

  ② 返回值类型是:void

  ③ 方法名是:printOne

  ④ 它没有参数列表;

  ⑤ 它的“签名”是:public void printOne()

  5.4 运算符

  传授新知

  运算符是用来表示某一种运算的符号。在程序设计中,我们经常要进行各种运算,从而达到改变变量的值的目的。要实现运算,就要使用运算符,在本节中,我们就一起关注一下Java语言所提供的运算符。

  5.4.1算术运算符

  顾名思义,算术运算符就是那些用来进行算术运算的符号。这类运算符是最基本、最常见的,它包括:

  运算符 说 明 示 例

  + 执行加法运算 5+5 (等于10)

  - 执行减法运算 6-2 (等于4)

  * 执行乘法运算 5*7 (等于35)

  / 执行除法运算 8/2 (等于4)

  % 执行模运算(就是求余数) 7%2 (等于1)

  表5-1 算术运算符

  一些说明:

  %:模运算,就是求余数。7/2=3…1,所以7%2=1。

  5.4.2赋值运算符

  赋值运算符就是用来为变量赋值的。最基本的赋值运算符就是等号“=”。我们在变量那一个小节就已经使用过了:“变量名=值”,这里的“=”就是赋值运算符。

  在Java语言中,还提供了一种叫算术赋值运算符:

  运算符 实例 说明

  += X += 5 等价于 X = X+5

  -= X -= 5 等价于 X = X-5

  *= X *= 5 等价于 X = X*5

  /= X /= 5 等价于 X = X/5

  %= X %= 5 等价于 X = X%5

  表5-2 赋值运算符

  5.4.3自增/减运算符

  如果对C/C++有一些了解的话,你一定记得++、--两个运算符吧,它们经常出现在程序中,这两个运算符是一元运算符。“++”就是自增运算符,而自减运算符就是“--”。

  自增运算符的作用是使变量加1,而自减运算符的作用则是使变量减1。

  也就是说:

  X ++ 等价于 X+=1、X=X+1;

  X-- 等价于 X-=1、X=X-1;

  自增/减运算符放在变量的左边或者右边将使得到值完全不同,完成的功能也完成不同。为了更好地理解它,下面我们来看一个例子。

  实例说明

  1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

 
 

  在写字板中,输入下面的程序代码,然后存盘退出。

  源程序:test01.java

 
 

  2.编译程序,输入命令:

 
 

  3.编译完成后,执行这个程序了。输入命令:

 
 

  这个程序的结果如下图所示:

  图5-10 test01的输出

  传授新知

  从上面的练习,可以看出:

 
 

  的作用是:首先令x=5,接着y=x++,x就变成了6,然而y的值是多少呢?y=x,那到底是6还是5,程序的输出告诉我们,是5。那么,程序段

 
 

  的作用是:首先令x1=5,接着y1= ++x1,x1就变成了6,然而y1的值是多少呢?y1=x1,那到底是6还是5,程序的输出告诉我们,是6。

  通过比较这两个程序,我们可以发现,它们的区别就在于++在什么地方:变量的前面,还是变量的后面。

  如果在变量的后面,则是执行了这个语句之后,再使自己加1。

  如果在变量的前面,则是先使自己加1,然后再执行这个语句。

  5.4.4关系运算符

  我们在现实生活中经常遇到比较,而在使用Java语言进行程序设计时,也常常需要对两个对象进行比较,例如:比较两个对象是否相低,或者哪个对象更大些…。

  Java语言提供了 种关系运算符:

  1)“= =”:比较两个对象是否相等;

  例如:a = = b

  在这个表达式中,如果a等于b的话,表达式的值为“真”,否则为“假”。

  2)“>”:大于

  例如:a>b

  在这个表达式中,如果a大于b的话,表达式的值为“真”,否则为“假”。

  3)“<”:小于

  例如:a<>< p=""><>

  在这个表达式中,如果a小于b的话,表达式的值为“真”,否则为“假”。

  4)“>=”:大于等于

  例如:a>=b

  在这个表达式中,如果a大于或者等于b的话,表达式的值为“真”,否则为“假”。

  5)“<=”:小于等于

  例如:a<=b

  在这个表达式中,如果a小于或者等于b的话,表达式的值为“真”,否则为“假”。

  5.4.5逻辑运算符

  逻辑运算符又称为布尔运算符,是用来处理一些逻辑关系的运算符,它最经常应用于流程控制(关于流程控制的内容,我们将在第7章详细说明)。在Java语言中提供了四种逻辑运算符:

  1) 与运算符:“&&”

  2) 或运算符:“||”

  3) 非运算符:“!”

  4) 异或运算符:“^”

  在逻辑运算世界中,只有两种值:真(true)、假(false)。所以不管是参与运算的变量,还是运算的结果都只有这两种可能的取值。

  下面,我们就逐一对它们做一简单的说明。

  1.与运算符“&&”

  与运算符,可以理解为“而且”。例如:(yuwen > 85)&&(shuxue > 90)就可以理解成为语文成绩(yuwen)大于85分而且数学成绩(shuxue)大于90分。这样只要以下两个命题之一是假的,整句话说明的事情也就是假的。

  1) 语文成绩大于85分;

  2) 数学成绩大于90分;

  如果我们使用X来代表第一个命题,Y来代表第二个命题,我们就可以得到下面这一张与运算表:

  X Y X&&Y

  true(真) true(真) true(真)

  true(真) false(假) false(假)

  false(假) true(真) false(假)

  false(假) false(假) false(假)

  表5-3 与运算表

  一些提示:

  我们举个例子来说明,假如一个学生它的成绩是双科88,那么“语文成绩大于85”就是真的,而“数学成绩大于90”就是假的。这时如果我们说他“语文成绩大于85,而且数学成绩大于90”就是假的。

  2.或运算符“||”

  或运算符,则可以理解为“或者”。例如:(yuwen > 85)||(shuxue > 90)就可以理解成为语文成绩(yuwen)大于85分或者数学成绩(shuxue)大于90分。这样只要以下两个命题之一是真的,整句话说明的事情也就是真的。

  1) 语文成绩大于85分;

  2) 数学成绩大于90分;

  如果我们使用X来代表第一个命题,Y来代表第二个命题,我们就可以得到下面这一张与运算表:

  X Y X||Y

  true(真) true(真) true(真)

  true(真) false(假) true(真)

  false(假) true(真) true(真)

  false(假) false(假) false(假)

  表5-4 或运算表

  一些提示:

  我们再用上面那个例子来说明,如果我们说“语文成绩大于85,或者数学成绩大于90”,则这句话就是真的。

  3.非运算符“!”

  非运算符,可以理解为“不是”、“非”。例如:!(yuwen > 85)就可以理解为语文成绩不大于85分。这时,如果语文成绩大于85,则!(yuwen > 85)就是假的;如果语文成绩不大于85分,!(yuwen > 85)就是真的。

  我们可以通过一张表来说明:

  X !X

  true(真) false(假)

  false(假) true(真)

  表5-5 非运算表

  4.异或运算符“^”

  最后一种逻辑运算符在现实生活中不常见,大家掌握起来就需要更费力一些了。这就是“异或”运算。

  我们可以通过下表来理解这个逻辑运算:

  X Y X^Y

  true(真) true(真) false(假)

  true(真) false(假) true(真)

  false(假) true(真) true(真)

  false(假) false(假) false(假)

  表5-6 或运算表

  从这张表,我们可以看出,异或运算的结果与或运算极为类似,只有当X与Y都是真(true)值时不同。我们可以通过一句话来记住它:“两个值不同,值为真;两个值相同,值为假”。(这不,因此我们称之为“异”。异者,不同也,也就是说两个值不能相同)

  自测练习

  1) Java语言中提供了_______个算术运算符。

  a.6个 b.5个 c.4个

  2) 70%20=________。

  a.3.5 b.50 c.10

  3) 阅读这个程序,写出这个程序的输出:

 
 

  4) 在Java语言中,或运算符是____________。

  a.| b.|| c.& d.!!

  5) true ^ true =___________

  a.true b.false

  6) 阅读以下程序,写出这个程序的输出,然后再运行一下这个程序检验一下是否正确:

 
 

  练习答案

  1)b Java语言提供了“+”、“-”、“*”、“/”、“%”5个算术运算符;

  2)c “%”是模运算符,也就求70/20的余数,因为70/20=3…10,余数为10;

  3)该程序的输出如下图所示:

  图5-11 lianxi01的输出

  在这个程序中,首先将变量x赋值为5,然后执行y=--x时,先将x做一个自减运算(因为自减运算符--位于变量的前面,所以在赋值前先自减),再赋值给y,这样x就变成了4,最后将4赋给y。

  4)b 在Java语言,或运算符是||。

  5)b 异或运算是最奇怪的一种逻辑运算,只有两个值不相同时才返回真值。而在本题中,做异或运算的两个值都是true,所以返回假值。

  6)该程序的输出如下图所示:

  图5-12 lianxi02程序的输出

  我们一起来看一下,由于x=5,所以:

  1) 表达式x= =5:因为x是等于5,所以表达式的值为true;

  2) 表达式x>5:因为x等于5,而不是大于5,所以表达式的值为false;

  3) 表达式x>=5:因为x等于5,也就大于等于5,所以表达式的值为true;

  4) 表达式x<5:因为x等于5,而不是小于5,所以表达式的值为false;

  5) 表达式x<=5:因为x等于5,也就小于等于5,所以表达式的值为true;

  5.5 表达式

  传授新知

  表达式是运算符与操作数的结合,它是Java语言重要的组成部分。其实在前面的章节中,我们就看到过了表达式,例如:

  y=--x

  这是一个极为简单的表达式。其实一个表达式是可以由多个运算符构成的,它就象我们在儿时就学到过的“四则计算”一样。例如:

  y=x-z*5/2

  我们需要通过表达式来执行各种复杂的计算及其它操作,所以我们必须搞懂如何计算表达式。其实掌握Java语言中表达式的计算方法并不难,大家只要借助当年对付“四则运算”的经验就可以轻松进行。

  大家应该还能记得如何计算一个四则运算题吧!就如:

  3*(2+6/3)

  在这个例子中,我们最先计算括号中的表达式2+6/3,而在这个表达式中,应先计算除法,再计算加法,因此得到4,最后,我们再计算3*4,得到12。这种计算思路可以归纳成两点:

  1) 有括号先算括号内的,有乘除先乘除,最后算加减;

  2) 存在多个加减,或多个乘除,则从左到右进行;

  :-P,好象在复习小学知识了!其实这种思路可以归纳成一句严谨的话:

  按从左到右进行计算,先算优先级高的,再算优先级低的计算。

  在以前的数学中,运算符的优先级可分为三级:

  1) 最高级:( )

  2) 第二级:*、/;

  3) 最低级:+、-

  而在Java语言中,运算符可就多了,那其实也一样,根据其优先级来逐步计算,直到运算结束。以下就是各种运算符的优先级表:

  描述 运算符

  最高优先级 [ ] ( )

  一元运算符 ++ -- !

  算术运算符1 * / %

  算术运算符2 + /

  关系运算符 < <= >= >

  等于运算符 = = !=

  逻辑运算符 && ' ' ^

  赋值运算符 = += -= *= /= %=

  表5-7 Java运算符优先级表

  注意:

  在这里仅列出了最常见的运算符,还不包括所有的运算符。关于一些特殊的运算符,我们会在遇到时再作说明。

  5.6 包

  传授新知

  在Java语言中,包的使用是它的一大特色。使用Java提供的大量包,程序员可以轻松、方便地编写出复杂的、功能强大的应用程序。这些包就是Java应用程序编程界面,即Java API。它是为用户开发自己的类、小应用程序和应用程序而设计。

  5.6.1 Java核心API

  在Java语言,最基本的包就是Java语言核心API,它包括:

 
 

  下面,我们就对它们做一个简单的描述,以帮助大家能够更好的理解它们,方便大家在需要时使用。

  1)java.lang

  它是Java语言中最核心的包,它提供了最基本的数据类型,编程框架。

  2)java.io

  io,就是input/output的缩写,它是Java语言的标准输入/输出库。

  3)java.util

  它是由几个基本的实用类组成的,如日期类。

  4)java.net

  这是使Java具备网络处理功能的类,使用这个包就可轻松地创建、连接套接字(socket)、可以编写出自己的telnet、FTP等程序。

  5)java.awt.*

  代表java.awt以及java.awt.image等其它包。这些包就是通常说的Java Abstract Window Toolkit(抽象窗口工具包,简称AWT)。它是由一些能够为用户的小应用程序创建丰富、有吸引力的、实用的界面资源组成的。它是使用Java开发图形界面程序时必不可少的一个包。使用它就可创建出美丽的图形世界。

  6)java.applet

  大家应该还能够记得applet是什么吧?对,小应用程序。这个Java API中最小的包是编写Java小应用程序的基础。大家应该注意到,在我们前面的所有关于小应用程序的例子中,都包含了这样一句:

 
 

  过去是这样,今后也是这样。要写Applet程序就要使用它!

  7)java.sql

  在这个包中,包含了JDBC(Java DataBase Connect,Java数据库连接),使用它可以开发出数据库应用程序。

  5.6.2 JDK 1.2新增API

  JDK 1.2版的发布,大大提高了Java语言的功能,它增加了许多包来完成,它们包括:

  1)Java Enterprise API

  在这个API中,提供对企业数据库的连接的支持。使用这个API可以构造出分布式的客户机/服务器方式的Java小应用程序和应用程序。这些程序可以运行在企业内部任何操作和硬件平台之上。

  2)Java Commerce API

  这个API主要是为网上购买和财政管理提供安全保障。

  3)Java Server API

  它是一个可扩展框架,它使用户能够开发互联网上的和企业网上的服务器端应用 程序。它提供了对服务器和管理信息资源统一和一致的访问。

  4)Java Media API

  它使得开发网页上的交互媒体成为现实。

  5)Java Security API

  它提供了一个保证小应用程序和应用程序安全功能的框架。

  自测练习

  1) Java API中最基本的包是:__________。

  a. Java 核心API b.Java基本API c. Java Server API

  2) 写一个小应用程序必须使用___________包。

  a. java.awt b.java.applet c.java.application

  3) 要使用Java语言开发socket程序,需要使用___________包。

  a.java.net b.java.io c.java.awt

  4) 而提供了图形界面开发支持的,是__________包。

  a.java.io b.java.awt c.java.applet

  5) 如果要使用JDBC,应该包含____________包。

  a.java.io b.java.sql c.java.applet

  6) 在JDK1.1中包含Java Server API吗?___________。

  a.是的 b.不包含

  7) Java Enterprise API最大的特点是支持了_____________程序的开发。

  a.企业应用 b.集中式 c.分布式

  8) 在JDK1.2版中,提供了一个同步的播放声音、视频的媒体播放器,你认为它属于___________包。

  a.Java Enterprise API b.Java Commerce API c.Java Media API

  9) 以下_____________包是为网上购买提供安全保证的。

  a.Java Enterprise API b.Java Commerce API c.Java Security API

  练习答案

  1)a Java语言最基本的API称为核心API。

  2)b 在java.applet包中包含了所有开发小应用程序所需要的类。

  3)a 在java.net包中包含了对套接字程序的支持。

  4)b 在java.awt包中提供了一套抽象窗口工具包,以供开发GUI之用。

  5)b 所有与数据库操作有关的类,包含在java.sql中。

  6)b Java Enterprise API是在JDK1.2中发布的。

  7)c 它支持的是分布式C/S结构的程序开发。

  8)c 提供这方面的,当然是Java Media API。

小讯
上一篇 2025-01-02 22:13
下一篇 2024-12-27 23:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/8717.html