一、转义字符
含义:用来表示有特殊意义的字符本身
符号 | 作用 |
---|---|
\n | 换行 |
\t | 水平制表 |
\” | 双引号 |
\’ | 单引号 |
\\ | 一个斜杠 |
System.out.print("表示换行\n");
System.out.print("相当于按一下回车换行符\n");
System.out.println("Java说:\"用双引号\"");
System.out.println("Java说:\'用单引号\'");
System.out.println("Java说:\\用斜杠\\");
System.out.println("水平制表符\t表示空四个字符\t也称缩进\t相当于按一下Tab键");
二、常量
常量:在程序执行过程中不变的量
分类:
-
数字字面量——程序中的数字
int i = 10; //10是常量
-
字面值常量——用双引号括起来的内容
System.out.println("字面值常量");
-
使用final(最终的)关键字去修饰的变量,变成了常量
final int i = 10;//10是常量,使用final修饰变量i,i也变成常量了 i = 20;//报错,i不能被重新赋值
字面值常量和final修饰的变量:这两个常量都是存储在内存中的常量池区域,直到项目结束才会被销毁
- 命名规则:常量全大写,单词与单词之间用下划线隔开
final int MAX_VALUE = 1000;
三、Java执行语句
- 顺序语句:方法中的代码从上往下执行
- 分支语句:某个条件成立就执行某个功能
- if分支
- switch分支
- 循环语句:某个条件成立就重复的执行某个功能
- for循环
- while循环
- do-while循环
- 特殊的流程控制语句
- break
- continue
- return
- lable
四、if分支
1. 简单if分支
语法结构:
if(表达式){
...代码块...
}
表达式的结果必须是boolean
true - 执行代码块
false- 跳过if分支
if (false) {
System.out.println("代码块");
}
System.out.println("if分支以外的代码");
案例:如果Miku的Java考试成绩大于98分,Miku就能获得一根葱
Scanner scan = new Scanner(System.in);
System.out.println("请输入Miku的考试成绩:");
double score = scan.nextDouble();
if (score > 98) {
System.out.println("奖励Miku一根葱");
}
2. 复杂if分支
案例一: 计算人类的健康值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)
//1.输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重-Kg:");
double weight = scan.nextDouble();
System.out.println("请输入身高-M:");
double height = scan.nextDouble();
//2.计算健康值
double health = weight / (height * height);
//3.判断
if (health > 20 && health < 25) {
System.out.println("小护士说:\"健康,继续保持\"");
}
案例二:Miku的Java成绩大于98分,而且音乐成绩大于80分,奖励她一根葱;或者Java成绩等于100分,音乐成绩大于70分,也可以奖励奖励她一根葱。
//1.输入java成绩和音乐成绩
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();
System.out.println("请输入音乐成绩:");
double musicScore = scan.nextDouble();
//2.判断
if ((javaScore > 98 && musicScore > 80) || (javaScore == 100 && musicScore > 70)) {
System.out.println("奖励Miku一根葱");
}
驼峰命名法:
- 类名:大驼峰(单词首字母大写)BigHump
- 变量名:小驼峰(除了第一个单词,其余的单词首字母大写)smallHump
3. 多重if分支
语法结构1:
if (表达式) {
...代码块...
} else {
...代码块...
}
表达式的结果必须是boolean类型
true - 执行代码块
false- 执行else代码块
if (false) {
System.out.println("代码块");
} else {
System.out.println("else代码块");
}
System.out.println("if分支以外的代码");
案例:如果蕾姆的Java考试成绩大于90分,奖励她一个棒棒糖,否则就罚她补课
//1.输入Java成绩
Scanner scan = new Scanner(System.in);
System.out.println("请输入蕾姆的Java考试成绩:");
double score = scan.nextDouble();
//2.判断
if (score > 90) {
System.out.println("奖励蕾姆一颗棒棒糖");
} else {
System.out.println("老师来给蕾姆通宵补课~~~");
}
语法结构2:
if (表达式1) {
...代码块1...
} else if (表达式2) {
...代码块2...
} else if (表达式n) {
...代码块n...
} else {
...else代码块...
}
表达式的结果必须是boolean类型
从上往下判断,哪个表达式先成立(true),就执行对应的代码块
如果都不成立,就执行else代码块
注意:else{}根据需求可写可不写
if (false) {
System.out.println("代码块1");
} else if (false) {
System.out.println("代码块2");
} else if (false) {
System.out.println("代码块n");
} else {
System.out.println("else代码块");
}
System.out.println("if分支以外的代码");
案例一:人类的健康值在
15-20的数值内为偏瘦
20-25的数值内为健康
25-30的数值内为偏胖
(健康值算法为:体重(Kg) / 身高(米)的平方)
//1.输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重-Kg:");
double weight = scan.nextDouble();
System.out.println("请输入身高-M:");
double height = scan.nextDouble();
//2.计算健康值
double health = weight / (height * height);
//3.判断
if (health >= 15 && health < 20) {
System.out.println("小护士说:\"偏瘦,多吃垃圾食品、多喝可乐、多熬夜~~\"");
} else if (health >= 20 && health < 25) {
System.out.println("小护士说:\"健康,继续保持\"");
} else if (health >= 25 && health < 30) {
System.out.println("小护士说:\"偏胖,注意饮食,多做运动,嘿嘿嘿~~~\"");
} else {
System.out.println("小护士说:\"健康值异常,请去医院进行详细的检查\"");
}
案例二:通过键盘录入学生成绩
如果在90-100之间,则打印“A”,
否则如果在80-90之间,则打印“B”,
否则如果在70-80之间,则打印“C”
否则如果在60-70之间,则打印“D”
否则如果在0-60之间,则打印“E”
否则打印“成绩异常”
System.out.println("输入你的成绩");
Scanner scanner = new Scanner(System.in
double score = scanner.nextDouble();
if (score >= 90 && score <= 100) {
System.out.println("A");
} else if (score >= 80 && score < 90) {
System.out.println("B");
} else if (score >= 70 && score < 80) {
System.out.println("C");
} else if (score >= 60 && score < 70) {
System.out.println("D");
} else if (score >= 0 && score < 60) {
System.out.println("E");
} else {
System.out.println("成绩异常");
}
4. 嵌套if分支
语法结构:
if (表达式1) {
if (表达式1) {
...代码块1...
} else {
...代码块2...
}
} else {
...else代码块...
}
案例:举行运动会,百米赛跑跑入16秒内的学生有资格进决赛,根据性别分别进入男子组和女子组
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
double score = scan.nextDouble();
if (score >= 0 && score < 16) {
System.out.println("请输入性别:");
String sex = scan.next();
if (sex.equals("男")) { //判断sex和"男"这两个字符串内容是否相等的方法
System.out.println("恭喜,进入到男子组决赛");
} else if (sex.equals("女")) {
System.out.println("恭喜,进入到女子组决赛");
} else {
System.out.println("性别异常");
}
} else if (score > 16) {
System.out.println("重在参与");
} else {
System.out.println("成绩异常");
}
总结:
- if可以判断复杂的条件
- if可以判断区间
- if可以判断单个值是否相等
- if可以二选一:if…else…
- if可以多选一:if…else if…
- if可以嵌套
五、switch分支
1. 基本使用
语法结构:
switch (表达式) {
case 值1:
...代码块1...
break;
case 值2:
...代码块2...
break;
case 值n:
...代码块n...
break;
default:
...代码块...
break;
}
表达式的结果可以是:byte、short、int、枚举(JDK1.5)、String(JDK1.7)
表达式的结果从上往下依次给值1、值2、值n比较,相等就执行对应的代码块
如果都不相等,就执行default代码块
注意:
- default代码块根据需求可写可不写
- break的作用是跳出整个分支语句
switch (1000) {
case 10:
System.out.println("10");
break;
case 50:
System.out.println("50");
break;
case 100:
System.out.println("100");
break;
default:
System.out.println("default代码块");
break;
}
System.out.println("switch分支以外的代码");
案例:水原千鹤参加计算机编程大赛
如果获得第一名,将获得1个月马尔代夫旅游
如果获得第二名,将奖励笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,水原千鹤晚上通宵补课
Scanner scan = new Scanner(System.in);
System.out.println("请输入比赛名次:");
String str = scan.next();
switch (str) {
case "第一名":
System.out.println("和老师一起马尔代夫旅游1个月");
break;
case "第二名":
System.out.println("奖励笔记本电脑一部");
break;
case "第三名":
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("老师晚上给水原千鹤通宵补课");
break;
}
2. 深入switch分支
面试题:
case的值可以相同吗?
不能相同,会报错:case 标签重复
default可以省略吗?
可以
break可以省略吗?
可以
default的位置一定要在最后吗?
不一定,但是最好写在最后,因为default写在中间可读性很低
表达式值的类型可以是什么?
byte、short、int、枚举(JDK1.5)、String(JDK1.7)
案例:输入年和月,输出当月的天数?
分析:
1/3/5/7/8/10/12:31天
4/6/9/11:30天
2:28天(平年)、29天(闰年)
注意:年份被4整除并且不能被100整数 或者 被400整除 – 闰年
Scanner scan = new Scanner(System.in);
System.out.println("请输入年:");
int year = scan.nextInt();
System.out.println("请输入月:");
int month = scan.nextInt();
int day = 0;//当月的天数
switch (month) {
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day = 31;
break;
case 4:case 6:case 9:case 11:
day = 30;
break;
case 2:
//判断是否是闰年
//条件:年份被4整除并且不能被100整数 或者 被400整除
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {//闰年
day = 29;
} else {//平年
day = 28;
}
break;
}
System.out.println(year + "年" + month + "月的天数为:" + day + "天");
if & switch
表达式的区别:
if:boolean
switch:byte、short、int、枚举(JDK1.5)、String(JDK1.7)
应用场景的区别:
if:判断单个值、区间、复杂条件
switch:判断单个值