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