scjp培训第三章java表达式和流程控制

上传人:飞*** 文档编号:5509291 上传时间:2017-09-06 格式:DOC 页数:15 大小:278KB
返回 下载 相关 举报
scjp培训第三章java表达式和流程控制_第1页
第1页 / 共15页
scjp培训第三章java表达式和流程控制_第2页
第2页 / 共15页
scjp培训第三章java表达式和流程控制_第3页
第3页 / 共15页
scjp培训第三章java表达式和流程控制_第4页
第4页 / 共15页
scjp培训第三章java表达式和流程控制_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《scjp培训第三章java表达式和流程控制》由会员分享,可在线阅读,更多相关《scjp培训第三章java表达式和流程控制(15页珍藏版)》请在金锄头文库上搜索。

1、第三章 表达式和流程控制本模块讨论变量、运算符和算术表达式并列出不同的管理运行程序路径的控制结构。第一节 相关问题讨论下列问题与本模块阐述的论题相关。- 什么类型的变量对程序员有用(例如,其它语言的程序员想了解 Java 编程语言是如何定义和处理全局变量和局部变量的) ?- 复合类可以有同名的变量吗?如果可以,它们的作用域有多大?- 列出用于其它语言的控制结构;一般语言都采用什么方法进行流程控制和中断流程(如在循环或开关语句中) ?第二节 目 标完成本模块的学习后,你应该能够:- 区分实例变量和局部变量;- 描述实例变量是如何被初始化的;- 确认并更正编译器错误;- 辨认、描述并使用 Java

2、 软件运算符;- 区分合法和非法原始类型赋值;- 确认 boolean 表达式和它们在控制构造中的要求;- 辨认赋值兼容性和在基本类型中的必要计算;- 使用 if, switch,for,while 和 do 句型结构和 break 和 continue 的标号形式作为程序中的流程控制结构。第三节 表达式3.3.1 变量和作用域你已经看到了两种变量的描述方法:原始类型变量和引用类型变量。你也看到了变量被声明的位置:在方法内(方法是面向对象的术语,它可引用函数或子程序,例如:main()或在方法外但在类定义之内。变量也可被定义为方法参数或构造函数参数。在方法内定义的参数被称为局部(local)变

3、量,有时也被用为自动(automatic)、临时(temporary)或栈(stack)变量。在方法外定义的变量是在使用 new Xxxx ()调用构造一个对象时被创建。在构造一个对象时,可创建两种变量。一是类变量,它是用 static 关键字来声明的;只要需要对象,类变量就将存在。二是实例变量,它不需用 static 关键字来声明;只要对象被当作引用,实例变量就将存在。实例变量有时也被用作成员变量,因为它们是类的成员。方法参数变量定义在一个方法调用中传送的自变量,每次当方法被调用时,一个新的变量就被创建并且一直存在到程序的运行跳离了该方法。当执行进入一个方法时,局部变量被创建,当执行离开该方

4、法时,局部变量被取消。因而,局部变量有时也被引用为“临时或自动”变量。在成员函数内定义的变量对该成员变量是“局部的”,因而,你可以在几个成员函数中使用相同的变量名而代表不同的变量。 该方法的应用如下所示:class OurClass int i; / instance variable of class OurClassint firstMethod() int j=0; / local variable/ both i and j are accessible from / this point.return 1; / end of firstMethod()int secondMethod

5、(float f) /method parameterint j=0; /local variable. Different from the / j defined in firstMethod().变量和作用域- 局部(local)变量是在一个方法内定义的变量 , 也被称作自动(automatic)、临时(temporary)或栈(stack )变量- 当一个方法被执行时, 局部变量被创建;当一个方法被终止时, 局部变量被清除- 局部变量必须使用之前初始化, 否则编译时将出错 / Scope is limited to the body of / secondMethod()./ Both

6、 i(instance variable of the / class OurClass) and j (local/ variable of this method) are/ accessible from this point.return 2; / end of secondMethod() / end of class OurClass3.3.2 变量初始化在 Java 程序中,任何变量都必须经初始化后才能被使用。当一个对象被创建时,实例变量在分配存储器的同时被下列值初始化:byte 0short 0int 0long 0Lfloat 0.0f double 0.0d char u0

7、000 (NULL) boolean false All reference typesNull注意 一个具有空值的引用不引用任何对象。试图使用它引用的对象将会引起一个异常。异常是出现在运行时的错误,这将在模块 7“异常”中讨论。在方法外定义的变量被自动初始化。局部变量必须在使用之前做“手工”初始化。如果编译器能够确认一个变量在初始化之前可被使用的情形,编译器将报错。public void doComputation() int x = (int)(Math.random() * 100);int y;int z;if (x 50) y = 9;z = y + x; / Possible us

8、e before initialization3.3.3 运算符Java 软件运算符在风格和功能上都与 C 和 C+极为相似。表 3-1 按优先顺序列出了各种运算符(“L to R”表示左到右结合,“R to L”表示右到左结合)Separator () ; , R to L + - + - ! (data type) L to R * / % L to R + - L to R L to R = instanceof L to R = != L to R & L to R L to R |L to R & L to R |R to L ?: R to L = *= /= %= += -= =

9、 = &= = |= 注意instanceof 是 Java 编程语言特有的运算符,将在模块 5“对象和类”中讨论3.3.4 逻辑表达式多数 Java 运算符是从其它语言借取得并且和人们一般期待的功能一样。关系和逻辑运算符返回布尔结果,int 到 boolean 不能自动转换。int i = 1;逻辑表达式支持的位运算符如下:!NOT &ANDXOR OR布尔运算符如下: Complement(取反) &AND XOR OR if ( i ) /generates a compile errorif (i !=0) / Correct支持的位运算符是!、&、, 支持的布尔逻辑运算符是 NOT、

10、AND、XOR 和 OR。每个运算都返回布尔结果。运算符&和是运算符&和的布尔等价物。布尔逻辑运算符将在下一页中讨论。3.3.5 位运算Java 编程语言支持整数数据类型的位运算,它们的运算符、&、和分别表示位运算的 NOT(为求反)、位 AND、位 XOR 和位 OR。移位运算符将稍后在本课程中讨论。3.3.6 布尔逻辑运算符运算符& (定义为 AND)和(定义为 OR)执行布尔逻辑表达式。请看下面的例子:MyDate d = null;if (d! = null) & (d,day() 31) / do something with d形成 if ()语句自变量的布尔表达式是合法且安全的。

11、这是因为当第一个子表达式是假时,第二个子表达式被跳过,而且当第一个子表达式是假时,整个表达式将总是假,所以不必考虑第二个子表达式的值。类似的,如果使用运算符,而且第一个表达式返回真, 则第二个表达式不必求值,因为整个表达式已经被认为是真。3.3.7 用加号(+)进行串链接用加号(+)进行串链接运算符 + 能够:进行 String 链接生成一个新的 String例如:String salutation = Dr. ;String name = Jack + Arthur;String title = salutation + name;最后一行的结果是:Dr. Jack Arthur一个自变量必

12、须是 String 对象非串被自动转换为 String 对象运算符 + 能够进行 String 对象的链接并生成一个新的 String:String salutation = Dr. ;布尔逻辑运算符 运算符是&(AND)和(OR) 运算符使用举例:见 3-11 页程序 String name = Jack + Arthur;String title = salutation + name;最后一行的结果是:Dr. Jack Arthur如果+运算符中有一个自变量为 String 对象,则其它自变量将被转换成 String。所有对象都可被自动转换成 String,尽管这样做的结果可能是意义含糊

13、的。不是串的对象是通过使用 toString() 成员函数而转换成串的等价物的。3.3.8 右移位运算符和Java 编程语言提供了两种右移位运算符运算符进行算术或符号右移位。移位的结果是第一个操作数被 2 的幂来除,而指数的值是由第二个数给出的。例如:128 1 gives 128/2 1 = 64256 4 gives 256/2 4 = 16-256 4 gives -256/2 4 = -16逻辑或非符号右移位运算符主要作用于位图,而不是一个值的算术意义;它总是将零置于最重要的位上。例如:1010 . 2 gives 111010 .1010 . 2 gives 001010 .在移位的

14、过程中, 运算符使符号位被拷贝。注意移位运算符将它们右侧的操作数模 32 简化为 int 类型左侧操作数, 模 64 简化为 long 类型右侧操作数。因而, 任何 int x, x 32 都会导致不变的 x 值, 而不是你可能预计的零。注意-值得称赞的重要一点是: 运算符仅被允许用在整数类型, 并且仅对 int 和 long 值有效。如果用在 short 或 byte 值上, 则在应用之前, 该值将通过带符号的向上类型转换被升级为一个 int。有鉴于此,无符号移位通常已成为符号移位。3.3.9 左移位运算符(和算术或符号右移位如下所示:见 3-13 页在移位的过程中, 符号位被拷贝逻辑或非符

15、号右移位运算符()作用于位图在移位的过程中, 符号位不被拷贝左移位运算符( 10) / jumps to the increment portion of / for-loop at line #13 continue test; / end while / end for练习:使用表达式练习目标你将编写、编译并运行两个使用标识符、表达式和控制结构的算法程序。一、准备为成功地完成本练习,你必须具备编译和运行 Java 程序的能力,并且熟悉流程控制构造。二、任务1 级:创建一个阶乘应用程序一个数 X 的阶乘(通常记作 X!)等于 X*(X-1)*(X-2)*1。例如 4!等于 4321=24。创建一个称作 Factor 的应用程序,利用该应用程序可打印 2,4,6 和 10 的阶乘。2 级:求解一个几何题程序已知一个直角三角形,其弦(最长边)的长度由下列公式给出:编写一个称作 hypotenuse 的 Java 软件程序,从已知直角三角形的直

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号