信息工程学院本科课程第3章运算符、表达式、语句主讲:赵建邦办公室:信息学院202E-mail:zhaojianbang@nwsuaf.edu.cn信息工程学院本科课程2本章主要内容3.1运算符与表达式3.2语句概述3.3执行流程控制if、switch、for、while、do-whilebreak、continue3.4数组与for3.5枚举类型与for、switch难点:循环语句枚举类型与for、switch信息工程学院本科课程3.1运算符与表达式算术运算符关系运算符逻辑运算符赋值运算符位运算符3信息工程学院本科课程3.1.1算术运算符单目算术操作符(Unary)+、-、++、--doublex=5,y;y=-x;++、--的操作对象必须是定点型或者浮点型变量doublex=5,y;y=x++;doublex=5,y=0,z;z=x+++y;//x=6,y=0,z=5为了减少混淆,单目+、-用括号括起来二目算术操作符(Arithmetic)*、/、%、+、-注意,整数除法会去掉小数位,而不是四舍五入4信息工程学院本科课程3.1.2算术混合运算的精度精度(低-高)byteshortchar如果表达式中有double型,表达式结果为double如果表达式中最高精度为float,则表达式结果为float如果表达式中最高精度为long,则表达式结果为long如果表达式中最高精度低于int,则表达式结果为int5intlongfloatdouble信息工程学院本科课程3.1.3关系运算符关系运算符是二目运算符,用来确定两个值的关系,运算结果是boolean型6信息工程学院本科课程3.1.4逻辑运算符&&(二目,逻辑与)||(二目,逻辑或)!(单目,逻辑非)操作元必须是boolean型数据,逻辑运算符可以连接关系表达式7也称为短路逻辑运算符信息工程学院本科课程3.1.5赋值运算符赋值运算符是二目运算符,左面的操作元必须是变量,不能是常量或表达式。注意:不要将赋值运算符“=”与等号逻辑运算符“==”混淆。赋值运算不仅要注意数据类型是否一致,还需要注意精度8信息工程学院本科课程3.1.6位运算符对两个整型数据实施位运算,即对两个整型数据对应的位进行运算得到一个新的整型数据。例3.1“按位与”运算‘&’“&=”“按位或”运算‘|’“|=”“按位非”运算‘~’(单目)“按位异或”运算‘^’“^=”如果表达式中最高精度为long,则表达式结果为long如果表达式中最高精度低于int,则表达式结果为int9信息工程学院本科课程Example3_1.java10信息工程学院本科课程3.1.6移位运算符移位操作符‘’“=”‘’“=”移位操作符可以作为乘法使用无符号右移‘’“=”使用“零扩展”:无论操作数是正还是负,都在高位插入0对char、byte、short进行移位,在移位之前会被转换成int类型,结果也为int类型;对long类型的数值进行处理,得到long结果11信息工程学院本科课程3.1.7instanceof运算符instanceof运算符是二目运算符,左面的操作元是一个对象;右面是一个类。当左面的对象是右面的类或子类创建的对象时,该运算符运算的结果是true,否则是false。12信息工程学院本科课程3.1.8运算符综述Java的表达式就是用运算符连接起来的符合Java规则的式子运算符的优先级决定了表达式中运算执行的先后顺序在编写程序时尽量的使用括号()来实现想要的运算次序,以免产生难以阅读或含糊不清的计算顺序运算符的结合性决定了并列的相同级别运算符的先后顺序13信息工程学院本科课程3.2语句概述方法调用语句表达式语句复合语句空语句控制语句package语句和import语句14信息工程学院本科课程3.3if条件分支语句if语句根据一个条件来控制程序执行的流程良好的编程习惯:不要省略“{”,“}”if-else语句同上,单条件分支语句if-elseif-else语句多条件分支语句15信息工程学院本科课程3.4switch开关语句switch语句是单条件多分支语句,语法:switch(表达式){case常量值1:若干个语句break;case常量值2:若干个语句break;...case常量值n:若干个语句break;default:若干语句}16注意点:1、switch表达式的值必须为byte、short、int、char、枚举类型等2、case后面的常量值与表达式的数值类型统一,且互不相同3、default可选4、switch表达式的值不能为long5、没有break的情况信息工程学院本科课程3.5循环语句for循环格式:for(表达式1;表达式2;表达式3){若干语句}17信息工程学院本科课程3.5循环语句while循环格式:while(表达式){若干语句}18信息工程学院本科课程3.5循环语句do-while循环循环体至少被执行一次格式:do{若干语句}while(表达式);19信息工程学院本科课程3.6break和continue相同点:都可以使用在循环体中break:在某次循环中执行了break,整个循环体结束,接着执行循环体外的语句continue:在某次循环中执行了continue,跳过本次循环体的后续语句,执行下一次循环例3.720信息工程学院本科课程3.7数组与for语句为了更好地遍历数组,Java增强了for语句的功能语法:for(声明循环变量:数组的名字){…}“对于循环变量一次取数组的每一个元素的值”注意,声明的循环变量必须和数组的类型相同21信息工程学院本科课程3.8枚举类型与for、switch枚举类型数组,然后使用forenumWeekDay{sun,mon,tue,wed,thu,fri,sat};WeekDaya[]=WeekDay.values();枚举类型的枚举名.values()可以返回一个数组!switch语句中表达式可以是枚举类型的变量,因此对应地,case后面的常量可以是枚举类型的常量22信息工程学院本科课程小结运算符与表达式算术运算符、关系运算符、逻辑运算符、位运算符等的操作对象以及精度转换问题语句if、if-else、if-elseif-elseswitchfor、while、do-whilebreak、continue数组、枚举类型与for、switch结合的新用法23信息工程学院本科课程上机作业1、输出1949-2010年的所有年份中的闰年A、能被4整除但不能被100整除B、能被400整除2、用数组输出6维以内的杨辉三角1111211331146411510105124信息工程学院本科课程谢谢!!!!25