Presentation is loading. Please wait.

Presentation is loading. Please wait.

第二章 Java 程序设计基础 浙江工业大学 计算机学院 赵小敏

Similar presentations


Presentation on theme: "第二章 Java 程序设计基础 浙江工业大学 计算机学院 赵小敏"— Presentation transcript:

1 第二章 Java 程序设计基础 浙江工业大学 计算机学院 赵小敏 zxm@zjut.edu.cn http://211.155.231.249:8009

2 主要内容 (1) 标识符和关键字 (2) 数据类型 (3) 变量和常量 (4) 数据类型转换 (5) 运算符 (6) 程序流程控制语句 (7) 结构化程序设计

3 2.1 标识符和关键字 Java 中的标识符:可以用来标识变量名、类名、 类中的方法名和文件名等. 标识符组成 : (1) 字母, (2) 数字, (3) 下划线 “_” 和 (4) 美元符号 “$”; 首字符必须是 (1) 字母, (2) 下划线 “_” 和 (3) 美元符 号 “$”; 所有标识符是区分大小写的 ; 除去关键字、 false 、 true 和 null;

4 问题 : 是 / 不是 标识符 ? myVariable 9pins MYVARIABLE i a+c testing1-2-3 _myvariable java¨ My Variable $myvariable _9pins It's 猫

5 标识符的习惯命名 能表达明确意义的英文单词命名,并采用规范 的单词缩写形式与单词分隔形式。 表示常量时标识符全部用大写字母和下划线表 示,如 PI , SALES_TAX 。 表示类名或接口名时,标识符用大写字母开头, 如 CreditCard 。 表示变量名和方法名,以小写字母开头,单词 之间不要有分隔符,第二及后面单词第一个字 符用大写字母,如 authorName 。

6 Java 关键字 具有特殊含义的字符序列  例如: public 、 static 和 class  具有特殊用途,不能作为变量名、方法名和类名

7 2.2 数据类型

8 基本数据类型 类型默认值封装类 byte ( byte ) 0 Byte short ( short ) 0 Short int0Integer long 0L 或 0l Long float 0.0f 或 0.0F Float double 0.0 或 0.0d 或 0.0D Double char ‘\u0000’( 空字符 ) Char booleanfalseBoolean

9 2.3 变量和常量 变量在计算机内部对应着一个存储单元,而且 总是具有某种数据类型:基本数据类型或引用 数据类型 变量总是具有与其数据类型相对应的值 每个变量均具有 : 名字、类型、一定大小的存 储单元以及值  变量名对应内存的位置

10 Java 变量必须属于某种类型 变量值也必须与变量类型相匹配 例如 : int studentNumber; // 声明单个变量 double velocity, distance; // 声明多个变量 studentNumber=30;// 给变量赋以整数 30 int studentNumber=30;// 声明变量,并赋初值

11 变量在内存中的存储方式 int ID = 42889; String s = “Hello World!”; 42889 ID E3FA08C1 S 堆栈 Hello World!”; String 堆

12 常量 赋值后不能更改的值 使用关键 final 使常量不能改变 如 final double SALES_TAX=6.5; 如果试图改变常量的值,编译器将发出一条出 错信息

13 Java 常量 Java 常量包括基本数据类型常量、字符串 (String) 常 量和 null 布尔 (boolean) 常量只有两个: true 和 false ‘c’, ‘\u0061’, ‘\u0051’ 和 ‘\u005a’ 是 char 常量. 34 是 int 常量 1.5, 45.6, 76.4E8 和 -32.0 是 double 常量 34L 是 long 常量. 1.5F, 45.6f, 76.4E8F 和 -32.0F 是 float 常量 “Hello World!” 是 String 常量 null 是引用数据类型的常量  任意引用数据类型的常量 (null)

14 2.4 数据类型转换 用变量、常量赋值给另一个变量时,两者的数 据类型必须一致。如不一致,则要进行数据的 类型转换 类型转换有隐式转换 ( 自动类型转换 ) 和显式转 换 ( 强制类型转换 ) 两种

15 隐式类型转换 当占用比特位较少的类型转换为占有比特位数较多的数 据时,使用隐式类型转换 转换过程由 Java 编译器自动进行 例:将短格式整型数据赋值为长格式整型数据,不会出 现错误,如: int i = 123; long j = i; 若反过来,将长格式赋值给短格式整数,如: long j= 25L; int i = j; 以及将双精度数据赋值为单精度变量,如: float a = 2.5; 将出现编译错误。

16 显示类型转换 当长格式数据赋值给短格式整型变量,双精度数据给 单精度类型赋值,浮点型数据给整型变量赋值时,均 要进行显示类型转换,即强制类型转换 强制类型转换的格式为: (目标数据类型)变量名 例如: int a = 260; byte b; b = (byte)a;

17 2.5 运算符 对基本数据类型的常量与变量进行加工的过程 成为运算,表示各种不同运算的符号称为运算 符,参与运算的数据称为操作数。 Java 语言的运算符分成以下几类: 一元运算符 二元或三元运算符 前缀或中缀或后缀运算符

18 Java 运算符 算术运算符 关系运算符 布尔逻辑运算符 位运算符 赋值类运算符 条件运算符 其他运算符

19 1 、算术运算符 算术运算符包括: +, -, *, /, ++, --, % 没有指数运算 Math.pow(2.0, 3.0); // 2.0 3.0 整数除法:截去余数 7 / 5 结果为 1 取模:返回余数 7 % 5 结果为 2

20 问题? 7/-5 = -7%5 = 7%-5 = -7.0/5 = 7/-5.0 = 7%5.0 = -7%-5.0 = -2 2 -1.4 2.0 -2.0

21 2 、关系运算符 六个关系运算符 : 、 = 、 == 和 != 例如 : 1 > 2; // false 3.5 != 1; // true 51.5 >= 23.0; // true 540 <= 654; // true 24 == 3*8; // true boolean isEqual=(10 < 10); // isEqual= false;

22 关系运算符的注意事项 、 = 只能用来比较两个数值类型数 据 (numbers 含 characters) 的大小  不能用于 Strings 、 booleans 、 arrays 或其他类型

23 3 、布尔逻辑运算符 六个布尔逻辑运算符 : 1) & ( 逻辑与 AND) 2) | ( 逻辑或 OR) 3) ^ ( 逻辑异或 XOR ) 4) ! ( 逻辑非 NOT)  单目运算符, 即只有一个操作数 5) && ( 条件与 AND) 6) || ( 条件或 OR)

24 4 、位运算符 位运算符包括: & 、 | 、 ~ 、 ^ 、 >> 、 >>> 和 << 1) >> 带符号右移 2) << 左移 3) >>> 不带符号右移 越晦涩难懂的,越会被 SCJP 考到 (?) 移位操作是:先将整数写成二进制形式,然后 按位操作,最后产生一个新的数 注意 : 只用于整数

25 5 、赋值类运算符 赋值类运算符包括: = 、 += 、 -= 、 *= 、 /= 、 &= 、 |= 、 %= 、 >= 和 >>>= op1=op1 二元运算符 op2; 等价于 op1 二元运算符 = op2; 例如: a=a+b; 等价于 a+=b;

26 6 、条件运算符 条件运算符 “? :” 的表达式形式为 “op1 ? op2 : op3” op1: 布尔表达式 例如 : int k= ( (i>=0) ? 1 : -1);

27 7 、其他运算符 其他运算符包括: ( 类型 ) 、. 、 [ ] 、 ( ) 、 instanceof 和 new 例如: int a=51; char c=(char)a;

28 运算符优先级 一元后缀 [ ]. ( ) ++ -- 一元前缀 ++ -- + = ~ ! 创建和强制类型转换 new (type) 倍数 * / % 增量 + - 移位 > >>> 关系 >= <= instanceof 等价 == != 与 & 异或 ^ 或 | 布尔与 && 布尔或 || 条件 ?: 赋值 = += -= *= /= %= >>= >>= &= ^= |=

29 2.6 程序流程控制语句 1) if / else if / else 2) while 3) do ~ while 4) for 5) switch case 6) break 7) continue

30 if-else 语句 if-else 语句根据判定条件的真假来执行两种操作中的一 种。它的形式如下: if ( 布尔表达式 ) { 语句 1 ; } [else { 语句 2 ; }] 其中,用 “[ ]” 括起的 else 部分是可选的 ( 即可有可无的 ) 。 若无 else 部分, if 语句的流程如下图:

31 无 else 部分的 if 语句的流程图 true false 语句 1 布尔表达式 后续语句

32 若有 else 部分, if 语句的流程如图 true false 语句 1 布尔表达式 后续语句 语句 2 注意: else 子 句不能作为语 句单独使用, 它必须是 if 语 句的一部分, 与 if 配对使用。

33 例:判断成绩是否优秀 1. class If_NoElse{ 2. public static void main(String[ ] args){ 3. int scoreOfMark=89; 4. if(scoreOfMark>=90){ 5. System.out.println(“ 祝贺你, 你的成绩优秀 "); 6. } 7. else{ System.out.println(“ 你的成绩未达到优秀, 请继续努力! "); 8. } 9. } 10. }

34 while 语句 while 语句的语法形式为: while ( 布尔表达式 ) { 语句 } while 语句用于在布尔表达式(即测试条件)的 值保持为真( true )时反复地执行其中的内嵌语 句(一般叫做循环体)。

35 while 语句的流程图 True false 循环体 布尔表达式

36 例:用 while 语句求 1+2+…+10 的和。 1. public class WhileOfSum{ 2. public static void main(String[ ] args) { 3. int i,sum; 4. sum=0; // 累加器清 0 5. i=1;//i 的初始值为 1 6. while (i<=10){ 7. sum+=i; 8. i++; 9. } 10. System.out.println("sum="+sum); 11. } 12. }

37 do ~ while 语句 Java 还提供了另一个与 while 语句类似的语句: do ~ while 语句。 do ~ while 语句的语法形式如下: do { 语句; } while ( 布尔表达式 );

38 do ~ while 语句的流程图 true 循环体 布尔表达式 false

39 for 语句 for 语句是循环的另一种表示形式。 for 语句的语法形式为: for ( 表达式 1 ;表达式 2 ;表达式 3) { 语句; } 例如要使循环执行某一段代码 1000 次,可以表达为: for (int number=0; number<1000; number++) { …… // 一段代码 }

40 for 语句的流程图 true false 求解表达式 3 表达式 2 循环体 For 语句的下一句 求解表达式 1

41 例:用 for 语句求 1+2+…+10 的和 1. public class ForOfSum{ 2. public static void main(String[ ] args) { 3. int i,sum; 4. sum=0; // 累加器清 0 5. for(i=1;i<=10;i++){ 6. sum+=i; 7. } 8. System.out.println("sum="+sum); 9. } 10. }

42 for 语句常见的错误 错误一: for 语句不写大括号 { } for(int i=1,sum=0;i<=100;i++) sum+=I; System.out.println(“i=”+i+“,+sum=”+sum); 错误二:利用浮点类型的 = 或 != 运算作为条件 表达式 for(double x=0.1;x!=1.0;x+=0.1){ System.out.println(x+";"); }

43 switch 语句 switch 语句根据表达式的结果来执行多个 操作中的一个,它的语法形式如下: switch (表达式) { case 常量 1 :语句 1 ; [break ; ] case 常量 2 :语句 2 ; [break ; ] … case 常量 n :语句 n ; [break ; ] [default: 缺省处理语句 break ; ] }

44 switch 语句的流程图 表达式 break 语句 1 break 语句 2 break 语句 n break 缺省处理语句 后续语句 常量 1 常量 2 常量 n default …….

45 switch 语句的注意点( 1 ) 1. 使用 switch 语句时,要注意表达式必须是符合 byte,char,short,int 类型的表达式,而不能使用浮点类型 或 long 类型,也不能为一个字符串; 2. switch 语句将表达式的值依次与每个 case 子句中的常量 值相比较。如果匹配成功,则执行该 case 子句中常量值 后的语句,直到遇到 break 语句为止; 3. case 子句中常量的类型必须与表达式的类型相容,而且 每个 case 子句中常量的值必须是不同的; 4. default 子句是可选的,当表达式的值与任一 case 子句中 的值都不匹配时,就执行 default 后的语句。

46 switch 语句的注意点( 2 ) 5. break 语句在执行完一个 case 分支后,使程序跳出 switch 语句,执行 switch 语句的后续语句。 6. 在一些特殊的情况下,例如多个不同的 case 值要 执行一组相同的操作,可以写成如下形式: … case 常量 n : case 常量 n+1 :语句 [break ; ] …

47 switch 语句的注意点( 3 ) 7.case 分支中包括多个执行语句时,可以不用花括号 “{}” 括起; 8. 通过 if-else 语句可以实现 switch 语句所有的功能。 但通常使用 switch 语句更简练,且可读性强,程序的 执行效率也高; 9. if-else 语句可以基于一个范围内的值或一个条件来 进行不同的操作,但 switch 语句中的每个 case 子句 都必须对应一个单值。

48 例:用 switch 语句实现学生成绩的百分制 到等级制的转换 1. class SwitchDemo{ 2. public static void main(String[ ] args) { 3. int testScore=88; 4. char grade; 5. switch (testScore/10) { // 两个整型数相除的结果还是整型 6. case 10: // 此处没有使用 break 7. case 9: 8. grade='A'; break; // 值为 10 和 9 时的操作是相同的 9. case 8: 10. grade='B'; break; 11. case 7: 12. grade='C';break; 13. case 6: 14. grade='D';break; 15. default: 16. grade='F'; break; 17. } 18. System.out.println("grade is:"+grade); 19. } 20. }

49 break 语句 对于 Java 中的三种类型的循环: while 、 do- while 、 for 来说,正常的退出循环的方法是当测 试条件变为 false 时。但有时即使测试的条件为 true ,也希望循环立即终止,这时可以用 break 语句实现此功能。 break 语句的一般语法格式为: break [ 标号 ]; break 语句不能用于循环语句和 switch 语句之外 的任何其它语句中。

50 例: break 语句的例子 1. public class BreakDemo { 2. public static void main(String[ ] args) { 3. int index=0; 4. while (index<=100) { 5. index+=10; 6. if (index==40) 7. break; 8. /* 当 index 的值大于 100 时,循环将终止。但有一种特 殊的情况,如果 index 的值等于 40 ,循环也将立即终止。 */ 9. System.out.println("The index is "+index); 10. } 11. } 12. } 输出结果: The index is 10 The index is 20 The index is 30 true false

51 continue 语句 Continue 语句只能在循环中使用。 它和 break 语句的区别是 continue 语句只结束本次 循环,而不是终止整个循环的执行;而 break 语句 则是结束整个循环语句的执行。 continue 语句的一般格式为: continue[ 标号 ];

52 例 :continue 语句的例子 1. public class ContinueDemo{ 2. public static void main(String[] args){ 3. int index=0; 4. while(index<=99){ 5. index+=10; 6. /* 当 index 的值等于 40 时,使循环回到 while 语 句处, 而不像正常处理那样去执行后面的输出语句 */ 7. if(index==40) 8. continue; 9. System.out.println("The index is "+index); 10. } 11. } 12. } turefalse

53 学生成绩查询系统 —— 案例 1 打印某学生某一学期所有课程的成绩和等级 (优、良、中、及格和不及格),并给出平均 成绩。

54 1. public class PringStuScore { 2. public static String scoreLevel(int score) { 3. if(score>=90){ 4. return " 优 "; 5. } 6. else if(score>=80){ 7. return " 良 "; 8. } 9. else if(score>=70){ 10. return " 中 "; 11. } 12. else if(score>=60){ 13. return " 及格 "; 14. } 15. else{ 16. return " 不及格 "; 17. } 18. } 19. public static void main (String[] args) { 20. int javaScore=90; 21. int databaseScore=75; 22. int englishScore=85; 23. int avrScore=(javaScore+databaseScore+englishScore)/3; 24. System.out.println("Java 课程成绩: "+javaScore+" "+scoreLevel(javaScore)); 25. System.out.println(" 数据库课程成绩: "+databaseScore+" "+scoreLevel(databaseScore)); 26. System.out.println(" 英语课程成绩: "+englishScore+" "+scoreLevel(englishScore)); 27. System.out.println(" 平 均 成 绩 : "+avrScore); 28. } 29. }

55 作业 2.1 、编写一个程序,打印 100 ~ 200 之间的素数,要求每 行按 10 个数 ( 数与数之间有一个空格间隔 ) 的形式对其输 出。 2.2 、编写一个编程,给定一个 t 的值按下式计算 y 值并输 出,要求分别用 if 和 switch 语句来实现。 t 2 -1 0≤t < 1 t 3 -2·t-2 1≤t < 3 y = t 2 -t·sin(t) 3≤t < 5 t+1 5≤t < 7 t-1 其它 提示: 开平方方法: Math.sqrt(n) 计算 sin(t) 方法: Math.sin(t)

56 Thank You… Any ??


Download ppt "第二章 Java 程序设计基础 浙江工业大学 计算机学院 赵小敏"

Similar presentations


Ads by Google