day02 课堂笔记
04_运算符
-
运算符和表达式
-
运算符:对常量或者变量进行操作的符号
-
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式
-
区别:不同运算符连接的表达式体现的是不同类型的表达式
- int a = 10; int b = 20, int sum = a + b; 这里由于+是算数运算符,所以表达式为算数表达式
-
-
算数 运算符
-
加 +、减 - 、乘 *:和数学中用法一样
-
除 /:针对两个整数,相除结果只取商(和数学中不一样)
- 10 / 3 = 商3 … 余1,使用的/所以结果为3
-
取余 %:针对两个整数,相除结果只取余数(和数学中不一样)
- 10 % 3 = 商3 … 余1,使用的%所以结果为1
-
注意:整数操作只能得到整数,要想得到小数,必须有浮点数参与运算,大部分都是整数运算
-
字符的+操作:
-
了解ASCII码表:ASCII (American Standard Code for Information Interchange):美国信息
交换标准代码,是计算机中"字节到字符"的一套对应关系
-
总结:char类型相加,参与运算的数据为该char字符在ASCII码表中对应的10进制的int值
-
例如:‘A’ + ‘B’ = 65 + 66 = 131
-
-
字符串的+操作:
-
当+操作中出现字符串时,这个+就是"字符串连接符"了;在出现字符串前的+都还是算术运算符
-
总结:字符串相加就是字符串的拼接
-
-
-
自增自减运算符:
- 自增 ++:变量的值加1
- 自减 - -:变量的值减1
- 注意:++和–既可以放在变量的后边,也可以放在变量的前边,区别如下
- 1.如果变量单独书写,符号在前在后没有任何区别
- 2.如果变量参与表达式
- 符号在前:先自增/自减,然后参与运算
- 符号在后:先参与运算,然后再自增/自减
- 常见用法:单独使用,这里千万不要给自己出难题
-
赋值 运算符
-
赋值 =:将等号右边的值赋给左边的变量;注意java中一个等号(=)是赋值,两个等号(==)才是等于的意思
-
+=、-=、*=、/=、%=:都是先根据符号计算等号两边的值,然后再将结果,赋值给左边
-
注意:扩展的赋值运算符隐含了强制类型转换
-
-
关系 运算符
-
注意:所有的关系运算符,判断的结果都是boolean类型,不是true就是false,没有其他
-
==:判断等号两边是否相等,成立返回true,不成立返回false
-
!=:判断等号两边是否不相等,成立返回true,不成立返回false
-
其余的>、>=、<、<=:都是常规的判断,成立返回true,不成立返回false
-
-
逻辑 运算符
-
逻辑与 &:两边都是true,结果为true,否则为false
- 短路与 &&:和单&作用一样,自带短路效果,遇false短路(右边就不判断了)
-
逻辑或 |:两边都是false,结果为false,否则为true
- 短路或||:和单|作用一样,自带短路效果,遇true短路(右边就不判断了)
-
逻辑异或 ^:果不同为true,相同为false(不常用)
-
逻辑非 !:结果和表达式的结果正好相反(不常用)
-
注意:以后我们的代码中,都用短路逻辑运算符
-
-
三元 运算符
-
格式:关系表达式 ? 表达式1 : 表达式2;
-
规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
-
-
示例1:100 > 50 ? true : fasle; //判断100大于50吗?如果大于返回true,如果不大于返回false
-
示例2:200 > 100 ? 200 : 100; //判断200大于100吗?如果大于返回200,如果不大于返回100
-
注意:三元运算符运算结果,要在左边用相同类型的变量接收
-
示例3:boolean result = 100 > 50 ? true: false; //结果是true,我用boolean类型的result接收
-
05_分支语句
-
流程控制
-
流程控制语句:通过一些语句,来控制程序的执行流程
-
流程控制语句分类:
-
顺序结构:是Java程序,默认的执行流程,按照代码的先后顺序依次执行,从上到下,从左到右
-
分支结构:if语句、switch语句
-
循环结构:for循环、while循环、do…while循环
-
-
-
if语句
-
if语句格式1
-
if(关系表达式){
语句体; //关系表达式结果为true才能进这里
}
-
执行流程:
① 首先计算关系表达式的值
② 如果关系表达式的值为true就执行语句体
③ 如果关系表达式的值为false就不执行语句体
④ 继续执行后面的语句内容
-
-
if语句格式2
-
if(关系表达式){
语句体1; //关系表达式为true走这里
}else{
语句体2; //关系表达式为false走这里
}
-
执行流程:
① 首先计算关系表达式的值
② 如果关系表达式的值为true就执行语句体1
③ 如果关系表达式的值为false就执行语句体2
④ 继续执行后面的语句内容
-
-
if语句格式3
-
if(条件判断1){
语句体1; //关系表达式为true走这里
}else if(条件判断2){
语句体2; //关系表达式为false走这里
}…
else{
语句体n+1;
}
-
执行流程:
① 首先计算判断条件1的值
② 如果值为true就执行语句体1;如果值为false就计算判断条件2的值
③ 如果值为true就执行语句体2;如果值为false就计算判断条件3的值
④ …
⑤ 如果没有任何判断条件为true,就执行语句体n+1
-
-
-
switch语句
-
格式:
switch(值) {
case 值1:
语句体1;
break; case 值2:
语句体2;
break;
… default:
语句体n+1;
break;
} -
格式说明
- 表达式:将要匹配的值,类型可以为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String
- case:后面括号中是要和表达式进行比较的值 ,被匹配的值
- break:表示中断,结束的意思,用来结束switch语句
- default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
-
执行流程
① 首先计算表达式的值。② 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语,句,在执行的过程中,遇到
break就会结束
③ 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束掉
注意事项
① case给出的值不允许重复
② case后面的值只能是常量,不能是变量
-
switch的case穿透:
-
case中如果不写break,会造成case穿透的现象
-
现象:当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行直到看见break,或
者将整体switch语句执行完毕,才会结束
-
应用场景:当发现switch语句中,多个case给出的语句体出现了重复的,就可以考虑使用case穿透来
优化代码
-
-
今日综合案例:
-
**Demo1需求:**键盘录入三个整数,使用三元运算符,求出三个整数的中间值,并打印在控制台
-
Demo2需求:
模拟一个计算器的功能,可运算两个整数的+、-、*、/、%操作
[1] 提示用户录入一个整数,选择对应的运算方式(1加法/2减法/3乘法/4除法/5取余)
[2] 用户选择完,提示用户选择的运算方式,使用if语句判断,打印字符串提示即可
[3] 最后使用switch语句,判断并打印对应运算结果,要求拼接成算式