《JAVA程序员培训定制课程c04.ppt》由会员分享,可在线阅读,更多相关《JAVA程序员培训定制课程c04.ppt(46页珍藏版)》请在三一文库上搜索。
1、1,运算符、表达式和流程控制,第四章,2,本章内容,变量及其作用域 Java运算符 表达式 分支语句 if-else语句 switch语句 循环语句 for 循环 while 循环 do-while 循环 特殊的循环控制语句,3,Java变量分类,变量用于记录数值可变的数据 按所属的数据类型划分: 基本数据类型变量 引用数据类型变量 按被声明的位置划分: 局部变量:方法或语句块内部定义的变量 成员变量:方法外部、类的内部定义的变量,4,局部变量声明和初始化,Java变量使用前必须先声明和初始化(赋初值) 局部变量声明语法格式 DataType varName1=value1,varName2=
2、value2 变量声明和初始化举例: public void amethod() int i; int j = i+5 ; / 编译出错,变量i还未被初始化 double d = 3.14; MyDate m; m = new MyDate(22,7,1964); System.out.println(m.getYear(); ,5,局部变量声明和初始化示例,public class TestLocal public static void main(String args) int x; if (args0 != null) x = 7; int y = x; ,6,成员变量声明和初始化,成
3、员变量在类的定义中声明 在创建对象的同时创建有关的成员变量 成员变量创建后系统自动对其进行 默认初始化 显式初始化,7,成员变量声明和初始化示例,public class Book private String title; public String getTitle() return title; public static void main(String args) Book b = new Book(); String s = b.getTitle(); / Compiles and runs String t = s.toLowerCase(); / Runtime Excepti
4、on! ,8,变量作用域,局部变量的作用域就是它所在的方法或语句块 在程序调用方法(进入语句块)时,局部变量才被创建并可用,随方法(语句块)的退出,局部变量将被销毁 成员变量依附于对象(局部变量)存在,具有与对象相同的生存期和作用域。,9,变量作用域举例,public class Test private int i=1; public void method1() int i=4, j=5; this.i = i + j; method2(7); public void method2(int i) int j=8; this.i = i + j; System.out.println(th
5、is.i); public static void main(String args) Test t = new Test(); t.method1(); ,main,栈内存,t,this,i,j,method1,4,5,7,8,i,j,this,method2,Test对象,i,10,Ex1,练习上页例程:Test.java,在各方法中添加输出语句显示Test对象属性i(this.i) 的值,分析程序执行流程并体会各变量的作用域。 /输出语句可采用:System.out.println(this.i);,11,运算符,算术运算符: +,*,/,%,+, 关系运算符: ,=, 赋值运算符: =
6、 扩展赋值运算符:+=,=,*=,/= 字符串连接运算符: +,12,等于运算符示例(1),class ComparePrimitives public static void main(String args) System.out.println(“character a = a? “ + (a = a); System.out.println(“character a = b? “ + (a = b); System.out.println(“5 != 6? “ + (5 != 6); System.out.println(“5.0 = 5L? “ + (5.0 = 5L); Syste
7、m.out.println(“true = false? “ + (true = false); ,13,等于运算符示例(2),boolean b = false; if (b = true) System.out.println(“b is true”); else System.out.println(“b is false”); ,14,等于运算符示例(3),import java.awt.Button; class CompareReference public static void main(String args) Button a = new Button(“Exit“); B
8、utton b = new Button(“Exit“); Button c = a; System.out.println(“Is reference a = b? “ + (a = b); System.out.println(“Is reference a = c? “ + (a = c); ,15,增量、减量运算符示例(1),class MathTest static int players = 0; public static void main (String args) System.out.println(“players online: “ + players+); Syst
9、em.out.println(“The value of players is “ + players); System.out.println(“The value of players is now “ + +players); ,16,增量、减量运算符示例(2),int x = 2; int y = 3; if (y = x+) | (x +y) System.out.println(“x = “ + x + “ y = “ + y); ,17,逻辑运算符(1),逻辑运算符功能 !- 逻辑非 & - 逻辑与 | - 逻辑或 - 逻辑异或 &- 短路与 | - 短路或 逻辑运算符功能说明:
10、,18,逻辑运算符(2),短路逻辑运算符应用 ,19,逻辑运算符(3),class TestOR public static void main (String args) if (isItSmall(3) | (isItSmall(7) System.out.println(“Result is true“); if (isItSmall(6) | (isItSmall(9) System.out.println(“Result is true“); public static boolean isItSmall(int i) if (i 5) System.out.println(“i l
11、ess than 5“); return true; else System.out.println(“i greater than 5“); return false; ,20,位运算符,位运算符功能 - 取反 & - 按位与 | - 按位或 - 按位异或 位运算符功能说明:,&,|,21,移位运算符(1),左移 “ab; “将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位; 无符号右移 “ab;“将二进制形式的a逐位右移b位,最高位空出的b位补0。,22,移位运算符(2),移位运算符性质 适用数据类型:byte、short、char、int、long,对低于int型的操作数将先
12、自动转换为int型再移位 对于int型整数移位ab,系统先将b对32取模,得到的结果才是真正移位的位数 对于long型整数移位时ab ,则是先将移位位数b对64取模,23,移位运算符(3),移位运算符应用举例,24,赋值运算符(1),赋值运算符= 当“=“两侧的数据类型不一致时,可以适用默认类型转换或强制类型转换原则进行处理 long l = 100; int i = (int)l; 特例:可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围 byte b = 12; /合法 byte b = 4096; /非法,25,赋值运算符
13、(2),当把一个引用变量赋给另一个引用变量是, 两个变量引用了同一个对象。(String除外) 示例: import java.awt.Dimension; class ReferenceTest public static void main (String args) Dimension a = new Dimension(5,10); System.out.println(“a.height = “ + a.height); Dimension b = a; b.height = 30; System.out.println(“a.height = “ + a.height + “aft
14、er change to b“); ,26,赋值运算符(3),扩展赋值运算符,27,字符串连接运算符 +,“+“ 除用于算术加法运算外,还可用于对字符串进行连接操作 int i = 300 +5; String s = “hello, “ + “world!“; “+“运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接 String a = “String“; int b = 3; int c = 7; System.out.println(a + b + c); System.out.println(a + (b + c));,28
15、,表达式,表达式是符合一定语法规则的运算符和操作数的序列 a 5.0 + a (a-b)*c-4 i30 & i%10!=0 表达式的类型和值 对表达式中操作数进行运算得到的结果称为表达式的值 表达式的值的数据类型即为表达式的类型 表达式的运算顺序 首先应按照运算符的优先级从高到低的顺序进行 优先级相同的运算符按照事先约定的结合方向进行,29,运算符优先级,30,Ex2,练习下面的程序,排除编译错误,分析其输出 结果: public class MyTest public static void main(String args) int a=10 int i = a; int j = a3;
16、 int k = a32; System.out.println(“i=” + i ); System.out.println(“j=“ + j ); System.out.println(“k=“ +k ); System.out.println(“m=“ +m ); ,31,分支语句,分支语句实现程序流程控制的功能 ,即根据一定的条件有选择地执行或跳过特定的语句 Java分支语句分类 if-else 语句 switch 语句,32,if-else语句语法格式,if(boolean类型表达式) 语句或语句块; if(boolean类型表达式) 语句或语句块; else if(boolean类
17、型表达式) 语句或语句块; else 语句或语句块; ,33,if-else语句应用举例,public class Test public static void main(String args) Test t = new Test(); t.test(75); public void test(int age) if (age250) System.out.println(“是个妖怪!“); else System.out.println(“此人芳龄 “ + age + “ 马马乎乎啦!“); ,34,switch语句语法格式,switch(exp) case const1: statem
18、ent1; break; case const2: statement2; break; case constN: statementN; break; default: statement_dafault; break; ,35,switch语句应用举例,public class Test public static void main(String args) int i = 1; switch (i) case 0: System.out.println(“zero“); break; case 1: System.out.println(“one“); break; case 2: S
19、ystem.out.println(“two“); break; default: System.out.println(“default“); break; ,36,switch语句有关规则,表达式expr的返回值必须是下述几种类型之一:int, byte, char, short; case子句中的值const 必须是常量,且所有case子句中的值应是不同的; default子句是任选的; break语句用来在执行完一个case分支后使程序跳出switch语句块;,37,Ex3,参照M04-24,26页的例子,练习使用if-else、switch分支语句,注意体会break/default
20、语句的用法;,38,循环语句,循环语句功能 在循环条件满足的情况下,反复执行特定代码 循环语句的四个组成部分 初始化部分(init_statement) 循环条件部分(test_exp) 循环体部分(body_statement) 迭代部分(alter_statement) 循环语句分类 for 循环 while 循环 do/while 循环,39,for 循环语句,语法格式 for (init_statement; test_exp; alter_statement) body_statement 应用举例 public class ForLoop public static void ma
21、in(String args) int result = 0; for(int i=1; i=100; i+) result += i; System.out.println(“result=“ + result); ,40,while 循环语句,语法格式 init_statement while( test_exp) body_statement; alter_statement; 应用举例 public class WhileLoop public static void main(String args) int result = 0; int i=1; while(i=100) res
22、ult += i; i+; System.out.println(“result=“ + result); ,41,do/while 循环语句,语法格式 init_statement do body_statement; alter_statement; while( test_exp); 应用举例 public class WhileLoop public static void main(String args) int result = 0, int i=1; do result += i; i+; while(i=100); System.out.println(“result=“ +
23、 result); ,42,特殊流程控制语句,break 语句 break语句用于终止某个语句块的执行 break; break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块 label1: label2: label3: break label2; ,43,特殊流程控制语句,break 语句用法举例 public class TestBreak public static void main(String args) for(int i = 0; i10; i+) if(i=3) break; System.out.println(“ i =“ + i); Syste
24、m.out.println(“Game Over!“); ,44,特殊流程控制语句,continue 语句 continue语句用于跳过某个循环语句块的一次执行 continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 continue语句用法举例1 public class ContinueTest public static void main(String args) for (int i = 0; i 100; i+) if (i%10=0) continue; System.out.println(i); ,45,特殊流程控制语句,public cla
25、ss PrimeNumber public static void main(String args) int n = 0; outer:for(int i=101;i200;i+=2) /外层循环 for(int j=2; ji;j+) /内层循环 if(i%j=0) continue outer; /不能使用 “break“ ,为什么? System.out.print(“ “ + i); n+; if(n6 ) continue; System.out.println(); /输出六个数据后换行 n = 0; ,continue语句用法举例2,46,Ex4,编写程序,用一个for循环计算1+2+3+ 100的值,并输出计算结果。使用其它循环-while, do while 分别实现上述任务。 编写程序,采用适当的循环和流控制语句实现下述功能:打印输出0200之间能被7整除但不能被4整除的所有整数;要求每行显示6个数据; 练习目的:体会和巩固循环语句、分支语句、流控制语句、表达式的计算次序、逻辑运算符的用法;,
链接地址:https://www.31doc.com/p-2145509.html