• 1. JAVA程序设计 第六版
  • 2. 本讲教学目标掌握Java的数据类型、变量常量 掌握运算符及优先级 掌握各种控制语句
  • 3. 知识回顾/本讲先行知识什么是JDK、JRE 什么是JAVASE、JAVAEE、JAVAME? 如何输出helloworld
  • 4. 本讲内容Java的变量、常量 Java的运算符 Java的语句
  • 5. 电脑使用内存来记忆计算时所使用的数据 内存如何存储数据? 内存像旅馆 数据各式各样,要先根据数据的需求(即类型)为它申请一块合适的空间 1、开房间(单人间、双人间、总统套间) 2、入住√回顾内存如何存放数据
  • 6. 1000*(1+5%)内 存 10001050变量:一个数据 存储空间的表示 对于专业程序员,数据存入内存不算完: 怎么找到存入的数据? 存进去还能改吗?98.76不同数据存入具有不同 内存地址的空间,相互独立 变量在银行存1000元钱,银行一年的利息5%,那一年之后钱变成了多少?
  • 7. 内存地址不好记,怎么办? 通过内存中小房间的别名找到数据存储的位置 变量是存储数据的一个基本单元房间 房间名字 房间类型 入住的客人 变量 变量名 变量类型 变量值 为什么需要变量对应
  • 8. 1、字母 2、下划线‘_’ 3、‘$’ 符号首字母任意多的: 1、数字 2、字母 3、下划线‘_’ 4、‘$’ 符号其余部分变 量 名Java语言中,变量命名要符合一定规则 money,score,name,sex 变量命名规范: 简短且能清楚地表明变量的作用,通常第一个单词的首字母小写,其后单词的 首字母大写。例如:myScore 变量命名规则2-1
  • 9. 变量命名规则2-2检查下面这些是否是合法的变量名 principalcost_pricemarks_3$lastnamecity123ratediscount%zip codeCityint××××
  • 10. 变量应用1、在内存中存储本金1000元 2、显示内存中存储的数据的值public class HelloWorld { public static void main(String[ ] args) { int money = 1000; //存数据 } } 数据类型 变量名 内存空间存的数值 System.out.println(money); //使用数据
  • 11. 变量的声明和赋值使用变量的步骤: 第一步:声明一个变量 第二步:赋值 第三步:使用变量数据类型 变量名 = 数值; 根据类型开辟空间 将数据存入空间 取出数据使用 数据类型 变量名; 变量名 = 数值;int money = 1000;int money; money = 1000 ;
  • 12. 12常量常量是一种标识符,它的值在运行期间恒定不变 常量标识符在程序中只能被引用,而不能被重新赋值常量圆周率PI圆周率PI代码表示方式public static final double PI = 3.14159265358979323846;用法将ang角度转换成径度 public static double toRadians(double ang) { return ang / 180.0 * PI; }
  • 13. 13常量的优点如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?public static double toRadians(double ang) { return ang / 180.0 * 3.14159265358979323846; } public static double toDegrees(double ang) { return ang * 180.0 / 3.14159265358979323846; } public static final double PI = 3.14159265358979323846; // 圆周率 public static double toRadians(double ang) { return ang / 180.0 * PI; } public static double toDegrees(double ang) { return ang * 180.0 / PI; }程序的可读性变差:用户很难理解数字或字符串的意思程序的可维护性变差:如果数值改变,则需要在很多地方改动,既麻烦又易出错使用常量可以增强程序的可读性、可维护性
  • 14. 14Java中常量的定义规则加入final 关键字代表常量, 加入static 关键字代表类变量 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串public class Student { public static final int FEMALE = 1; //代表女性 public static final int MALE = 2; //代表男性 private int sex; //性别 public void setSex(int sex) { if(sex==FEMALE) System.out.println("这是一名女学生"); else if(sex == MALE) System.out.println("这是一名男学生"); this.sex = sex; }}
  • 15. 数据类型
  • 16. Java基本数据类型
  • 17. 整型字面值在Java中有3种方法表示整数 十进制(0~9):不需要任何解释 int i = 99; 八进制(0~7):在数的前面放置一个0(零) int six = 06; //值为6 int nine = 011; //值为9 十六进制(0~9,a~f):在数前放置0x或者0X int x = 0x0001; int y = 0Xb; int z = 0x7FFff; 在数字后面加上L或l,类型定义为long long jo = 1109L; long so = 0xFFFL;
  • 18. 浮点字面值浮点字面值默认为double double d = 333242.00; double e = 987.44d; double f = 423.22D; float类型需要在字面值后面加F或f float jo = 1109.32F; float so = 4423.00f;
  • 19. 布尔字面值布尔值只能定义为true或false 一定注意使用布尔值的表达式 int x = 1; if(x) { } //编译错误 int y = 1; if(x+y){ } boolean b = false; if(b=true){ } if(b==true){ }
  • 20. 字符字面值char字面值表记为单引号内的单个字符,字符实际上只是一个16位无符号整数,不能直接输入的字符可以用转义字符 \ char a = ‘a’; char b = 98; System.out.println(b); char n = ‘\u004E’; System.out.println(n); char d = ‘\”’; 尽管字符串不是基本类型,但它能表现为字面值 String s = “Hello”; String hi = “Hello”+”World”; 字符串可以和其他基本数据类型连接,返回字符串类型
  • 21. 基本数据类型转换Boolean类型不可转换为其它的数据类型 整型、字符型、浮点型在混合运算中相互转换,转换时遵循以下原则 容量小的类型字段转化为容量大的类型,数据类型按容量大小排序(小 -> 大) byte→ short→ (char)→ int→long→float→ double 容量大的数据类型转换为容量小的数据类型,要加上强制转换符,但可能造成精度降低或溢出,使用时要注意 多种类型的数据混合运算时,系统首先自动的将所有数据转化为容量最大的那种数据类型,然后再进行计算
  • 22. 涉及byte、short和char类型的运算Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果。因此,如果把两个byte类型值相加,最后会得到一个int类型的结果class Test { public static void main(String []args){ byte b1=10,b2=20; byte b3=b1+1; //此处即报错,应改为byte b3=(byte)(b1+1); b3=b1+b2; //此处即报错,应改为byte b3=(byte)(b1+b2); } }
  • 23. 运算符算术运算符 关系运算符 逻辑运算符 赋值运算符
  • 24. 某班的A学员Java成绩是80分,B学员与A学员成绩相同,输出B学员成绩 int aScore = 80; int bScore; aScore = bScore; System.out.println(bScore);bScore = aScore ; //将右边的值给左边的变量 赋值运算符 aScorebScore8080副本赋值运算符2-1代码错误
  • 25. 变量名 表达式;赋值运算符2-2=Z = ( X * 2 ) + ( 5 – Y ) 表达式 表达式 表达式 赋值运算符 表达式举例
  • 26. 算术运算符基本的算术运算 操作数操作数运算符+-*/%
  • 27. 关系运算符常用的关系运算符有哪些: >,< ==,!= >=,<=大象的寿命 < 乌龟的寿命 真 篮球的大小 == 地球的大小 假由此看出关系运算符的作用:用来做比较运算 比较后结果:boolean类型
  • 28. 逻辑运算符运算符表达式说明&&条件1 && 条件2仅仅两个条件同时为真,结果为真||条件1 || 条件2只要两个条件有一个为真,结果为真!! 条件条件为真时,结果为假 条件为假时,结果为真
  • 29. 程序流程顺序执行 System.out.print(“hello"); System.out.print(“world"); 无条件分支 return,break,continue,throw,... 条件分支 if...else,switch...case,... 循环 while,do...while,for...each
  • 30. if条件结构if条件结构是根据条件判断之后再做处理if ( 条件 ) { //语句 }if ( 明天下雨 ) { 我就带伞去上课; }基本的if条件结构表达式语句假真
  • 31. 如何使用if条件结构 if-else条件结构if ( 条件 ) { //语句1 }else { //语句2 }if ( 明天下雨) { 我不上课; }else { 我去上课; }结合问题4真表达式语句1假语句2
  • 32. 多重if结构就是在else部分中还包含其他if块 多重if结构 if ( 条件 ) { //语句 } else if ( 条件 ) { //语句 } else { //语句 }可以有多个可以省略多重if结构假真真假表达式1语句1表达式2语句2语句3
  • 33. 如何使用多重if结构使用多重if结构解决问题 int score = 70; //考试成绩 if ( score >= 90 ) { System.out.println("优秀"); } else if (score >= 80 ) { System.out.println("良好"); } else if (score >= 60 ) { System.out.println("中等"); } else { System.out.println("差"); }大于等于90分大于等于60分,小于80分小于60分大于等于80分,小于90分
  • 34. switch (表达式) { case 常量 1: 语句; break; case 常量 2: 语句; break; default: 语句; }switch结构switch结构计算表达式的值如果等于常量1如果等于常量2如果没有找到匹配的值
  • 35. 常见错误String day = "星期一"; switch (day){ case "星期一": System.out.println("星期一:青菜 "); break; case "星期二": System.out.println("星期二:鱼 "); break; …… default: } ……switch后面小括号中表达式的值必须是整型或字符型代码错误
  • 36. 比较switch和多重if结构相同点 不同点 switch 多重if都可以实现多分支结构只能处理等值的条件判断,且条件是整型变量或字符变量的等值判断处理在else部分还包含其它if结构,特别适合某个变量处于某个区间时的情况
  • 37. while循环 特点:先判断,再执行while ( 循环条件 ) { 循环操作 } 符合条件,循环继续执行;否则,循环退出循环中被重复执行的操作int i = 1; while ( i <= 30 ) { System.out.println(“hello"); i ++; }编码规范:缩进、换行循环操作 循环条件 真假
  • 38. 怎样使用while循环录入班级人数和学员成绩,计算班级学员的平均成绩 循环条件:目前录入的成绩数目小于总人数 循环操作:录入学生成绩,并累加求和while(i<=stuNum){ System.out.print("请输入学号" + i + "的成绩:"); score = input.nextInt(); sum = sum + score; i++; } avg = sum / stuNum ;
  • 39. do-while循环do { 循环操作 } while ( 循环条件 );先执行一遍循环操作符合条件,循环继续执行;否则,循环退出特点:先执行,再判断循环操作 循环条件 真假
  • 40. while循环和do-while循环的区别 语法不同 初始情况不满足循环条件时 while循环一次都不会执行 do-while循环不管任何情况都至少执行一次do { 循环操作 } while( 循环条件 );while ( 循环条件 ) { 循环操作 }先判断,再执行先执行,再判断比较while和do-while
  • 41. for循环的语法和执行顺序什么是for循环for( ; ; ){ ; } 条件为true 循环体被执行 for ( int i = 0 ; i < 100 ; i++ ) { System.out.println(“hello"); } 代码规范:格式对齐、代码的缩进 表达式1 表达式2 表达式3 循环操作 参数初始化条件判断更新循环变量1243
  • 42. 为什么需要break语句int i = 2; switch(i){ case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; } //其他语句遇到break,立即跳出switch语句回顾break用于switch语句描述4000米长跑比赛for (int i = 0; i<10; i++) { 跑400米; } if(不能坚持){ break; //退出比赛 }第8圈, 快累死了… 我要退出…
  • 43. break语句break:改变程序控制流 用于do-while、while、for中时,可跳出循环而执行循环后面的语句while(…) { …… …… …… break; …… …… …… }跳出整个循环break通常在循环中与条件语句一起使用
  • 44. 为什么需要continue语句循环录入Java课的学生成绩,统计分数大于等于 80分的学生比例1、通过循环,获得分数大于等于80分的学生人数num 2、判断:如果成绩<80,不执行num++,直接进入下一次循环
  • 45. continue语句continue :只能用在循环里 continue 作用:跳过循环体中剩余的语句而执行下一次循环 while(…) { …… …… …… continue; …… …… }继续下一次循环通常与条件语句一起使用,加速循环for(int i = 0; i<10;i++){ 跑400米; if(!口渴){ continue; //不喝水,继续跑 } 接过水壶,喝水; }示例
  • 46. 循环总结int i=0; int sum=0; while( i<10 ){ sum=sum+i; i++; }int i=0; int sum=0; do{ sum=sum+i; i++; }while(i<10);int sum=0; for(int i=0;i<10;i++){ sum=sum+i; }123412341234while和for相同,先进行判断,后执行循环体内容 do-while是先执行,后判断,至少执行一次指出各种循环结构的执行顺序
  • 47. 控制流语句小结顺序结构:语句顺序执行 分支结构:语句在满足条件下执行 if, if-else, if-else if-else, switch 循环结构:语句在满足条件下循环执行多次 while, do-while, for 跳转语句 break, continue
  • 48. 程序调试调试 —— 程序员70%时间在做的事情 调试史话 调试的主要方法bug 缺陷 找出并解决bug的过程debug 调试设置断点单步执行观察变量
  • 49. 小结 变量、常量、数据类型 运算符有哪些 语句结构有哪几种
  • 50. 实验
  • 51. 本讲结束谢谢大家