day01 回顾 day01 基础知识_czsmqvq的博客-CSDN博客
继续
1、类型转换在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换。
1.1 隐式转换把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。
说明:
整数默认的数据类型是int类型,byte、short、char类型数据参与运算时均会自动转换成为int类型。(小的数据类型,和大的数据类型运算,小的会提升为大的之后,再进行运算)
1.2 强制转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。
强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
1.3 类型转换的案例
2、运算符 2.1 算术运算符 2.1.1 运算符和表达式
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
2.1.2 算术运算符
+ - * / %(取余)
2.1.3 字符的“+”操作
ASCII码表:是计算机中字节与字符对应关系的码表
char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:
'a' -- 97 a-z是连续的,所以'b'对应的数值是98,'c'是99,依次递加
'A' -- 65 A-Z是连续的,所以'B'对应的数值是66,'C'是67,依次递加
'0' -- 48 0-9是连续的,所以'1'对应的数值是49,'2'是50,依次递加
2.1.4 字符串的“+”操作
2.1.5 数值拆分
需求:
键盘录入一个三位数,将其拆分为个位,十位,百位,打印在控制台
2.2 自增自减运算符
注意事项:
++和--只能操作变量,不能操作常量
++和-- 既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。
参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。
最常见的用法:单独使用。
2.3 赋值运算符赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
| 符号 | 作用 | 说明 |
|---|---|---|
| = | 赋值 | a=10,将10赋值给变量a |
| += | 加后赋值 | a+=b,将a+b的值给a |
| -= | 减后赋值 | a-=b,将a-b的值给a |
| *= | 乘后赋值 | a*=b,将a×b的值给a |
| /= | 除后赋值 | a/=b,将a÷b的商给a |
| %= | 取余后赋值 | a%=b,将a÷b的余数给a |
2.4 关系运算符(比较运算符)
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。
| 符号 | 说明 |
|---|---|
| == | a==b,判断a和b的值是否相等,成立为true,不成立为false |
| != | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
| > | a>b,判断a是否大于b,成立为true,不成立为false |
| >= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
| < | a |
| <= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。
千万不要把“==”误写成“=”,"=="是判断是否相等的关系,"="是赋值。
2.5 逻辑运算符逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序 中的表达式是否成立,判断的结果是 true 或 false
| 符号 | 作用 | 说明 |
|---|---|---|
| & | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
| ^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
| ! | 逻辑非 | !a,结果和a的结果正好相反 |
2.6 短路逻辑运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| && | 短路与 | 作用和&相同,但是有短路效果 |
| || | 短路或 | 作用和|相同,但是有短路效果 |
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。
-
逻辑与&,无论左边真假,右边都要执行。
-
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
-
逻辑或|,无论左边真假,右边都要执行。
-
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
2.7 三元运算符
格式:关系表达式 ? 表达式1 :表达式2
执行流程:首先计算关系表达式的值,如果为true,取表达式1,false,取表达式2
2.8 三元运算应用
需求:
一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。
思考:怎么可以用一条三元运算符代表两条三元运算符?
3、流程控制语句 3.1流程控制语句分类顺序结构
分支结构(if, switch)
循环结构(for, while, do…while)
3.2 顺序结构顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺 序,依次执行,程序中大多数的代码都是这样执行的。
3.3 分支结构之if语句 3.3.1 if语句格式1格式:if(关系表达式){
语句体;
}
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体
③如果关系表达式的值为false就不执行语句体
④继续执行后面的语句内容
注意事项:1、如果if语句所控制的语句体是一条语句,大括号可以省略不写(不建议)
2、小括号后面不能点分号
3.3.2 if语句格式2格式:if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体1
③如果关系表达式的值为false就执行语句体2
④继续执行后面的语句内容
3.3.3 if语句格式3
格式:
if (关系表达式1) {
语句体1;
} else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程:
①首先计算关系表达式1的值
②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
④…
⑤如果没有任何关系表达式为true,就执行语句体n+1。
示例:
定义一个在0~100之间的变量a, 90~100优秀,80~89良好,70~79中等,60~69及格, 0~59请努力加油
示例:
定义一个在0~100之间的变量a, 90~100优秀,80~89良好,70~79中等,60~69及格, 0~59请努力加油!
3.3.4 案例:考试奖励
需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。
分析:
①小明的考试成绩未知,可以使用键盘录入的方式获取值
②由于奖励种类较多,属于多种判断,采用if...else...if格式实现
③为每种判断设置对应的条件
④为每种判断设置对应的奖励
3.4 分支switch语句
switch (表达式) {
case 1:
语句体1;
break;
case 2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
执行流程:
-
首先计算出表达式的值
-
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
-
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
格式说明:
表达式:除了基本数据类型外JDK7后支持String,JDK5以后可以是枚举。
case:后面跟的是要和表达式进行比较的值
break:表示中断,结束的意思,用来结束switch语句
default:表示所有情况都不匹配的时候执行的语句,和if中else相似
3.5 switch案例--减肥计划
需求:键盘录入星期数,显示今天的减肥活动
周一:跑步
周二:游泳
周三:慢走
周四:动感单车
周五:拳击
周六:爬山
周日:好好吃一顿
3.6 switch语句的case穿透
概述 : 如果switch语句中,case省略了break语句, 就会开始case穿透
需求 : 键盘录入星期数,输出工作日、休息日 (1-5)工作日,(6-7)休息日
注意:在switch语句中,如果case控制的语句体后面不写break,将会出现穿透现象
现象:当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行,直到看到break,或者将整个switch语句执行完毕,才会结束。



