目录
- 一、转义字符
- 二、常量
- 三、if分支
- 四、switch分支
- 五、 f分支与switch分支的区别
- 六、运算符的优先级
一、转义字符
含义:表示具有特殊意义的字符本身。
| n | 表示换行 |
| t | 表示水平制表 |
| " | 表示一个双引号 |
| ' | 表示一个单引号 |
含义:在程序执行过程中,不可改变的量。
(1)数字字面量:程序中出现的数字;(整数默认是int类型,小数默认是double类型)
(2)字面值常量:使用双引号括起来的内容;
(3)使用final(最终的)修饰的变量。
final int i = 100; //使用fianl修饰的变量,变为常量,程序结束时才会被回收 System.out.println(i);三、if分支
1.简单if分支:
语法结构:
if(表达式) {
代码块;
}
注意:表达式的结果必须是boolean.
true - >执行代码块 ;
false - >跳过分支语句,执行分支以外的代码.
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//如果麻生希的Java考试成绩大于98;麻生希就能获得一辆法拉利作为奖励
Scanner scan = new Scanner(System.in);
System.out.println("请输入麻生希同学的Java成绩:");
double score = scan.nextDouble();
if(score>98){
System.out.println("奖励麻生希同学法拉利玩具赛车一辆");
}
}
}
2.复杂的if分支:
(1)if可以判断区间;
(2) if可以判断复杂条件。
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//人类的健康值在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("小护士说"健康,请保持现有状态"");
}
}
}
3.if...else... :二选一的情况下使用
语法结构:
if(表达式){
...代码块...
}else{
...else代码块...
}
注意:表达式的结果必须是boolean
true -> 执行代码块
false -> 执行else代码块
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//如果小明Java考试成绩大于98分,老师就奖励他一个劳斯莱斯,否则老师就罚他进行编码
Scanner scan = new Scanner(System.in);
System.out.println("请输入小明的Java成绩:");
double score = scan.nextDouble();
if(score > 98){
System.out.println("奖励小明劳斯莱斯玩具赛车一辆");
}else{
System.out.println("老师给小明同学通宵补课");
}
}
}
4.多重if分支:多选一时就使用
语法结构:
if(表达式1){
...代码块1...
}else if(表达式2){
...代码块2...
}else if(表达式n){
...代码块n...
}else{
...else代码块...
}
注意:从上往下依次判断表达式,哪个表达式先成立(true),就执行对应的代码块,执行完毕后跳出整个分支语句。如果都不成立,则调用else代码块;else{}根据需求可写可不写。
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//1.输入成绩
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
double score = scan.nextDouble();
//2.判断成绩区间
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("成绩异常");
}
}
}
5.嵌套if:
例:学校组织运动会 - 百米赛跑,跑入14秒内同学进入到总决赛, 根据性别输出恭喜进入到男子组决赛、进入到女子组决赛。
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入比赛成绩:");
double s = scan.nextDouble();
if(s >= 0 && s<= 14){
System.out.println("请输入性别:");
String sex = scan.next(); //从控制台输入的数据是字符串类型
if(sex.equals("男")){ //判断sex 和 "男" 这两个字符串是否相同
System.out.println("恭喜,进入到男子组决赛...");
}else if(sex.equals("女")){ //判断sex 和 "女" 这两个字符串是否相同
System.out.println("恭喜,进入到女子组决赛...");
}else{
System.out.println("性别异常...");
}
}else if(s > 14){
System.out.println("已被淘汰,重在参与...");
}else{ //输入的秒数为负数
System.out.println("成绩异常...");
}
}
}
四、switch分支
语法结构:
switch(表达式){
case 值1:
...代码块1...
break;
case 值2:
...代码块2...
break;
case 值n:
...代码块n...
break;
default:
...default代码块...
break;
}
(1)表达式的结果:byte、short、char、int、字符串(JDK1.7)、枚举(JDK1.5);
(2) 表达式的结果分别于值1、值2、值n比较,哪个相等就执行对应的代码块;
(3)break表示跳出整个switch分支;
(4)default表示表达式的结果分别于值1、值2、值n比较,都不匹配的情况,就执行default代码块;
(5)default代码块根据需求可写可不写。
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//1.输入名次
Scanner scan = new Scanner(System.in);
System.out.println("请输入比赛名次:");
String str = scan.next();
//2.判断
switch(str){
case "第一名":
System.out.println("和老师一起参加学校组织的1个月马尔代夫旅游");
break;
case "第二名":
System.out.println("奖励苹果Pro笔记本电脑一部");
break;
case "第三名":
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("老师晚上给小明通宵补课");
break;
}
}
}
问:switch的表达式为什么不能是long值?
答:switch 对应的 JVM 字节码 lookupswitch、tableswitch 指令只支持 int 类型。
byte、char、short 类型在编译期默认提升为 int,并使用 int 类型的字节码指令。
switch的特殊应用:
需求:输入年和月,输出当月的天数。
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//1.输入年和月
Scanner scan = new Scanner(System.in);
System.out.println("请输入年:");
int year = scan.nextInt();
System.out.println("请输入月:");
int month = scan.nextInt();
//2.判断
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:
if(year%4==0 && year%100!=0 || year%400==0){ //闰年
day = 29;
}else{ //平年
day = 28;
}
break;
}
//3.输出
System.out.println(year + "年" + month + "月当月的天数为:" + day + "天");
}
}
五、if分支和switch分支的区别
1.表达式的区别:
if:表达式只能是boolean;
switch:表达式可以是byte、short、int、char、字符串、枚举。
2.应用场景的区别:
if:判断区间、判断负责条件、二选一、多选一、嵌套
switch: 判断单个值、二选一、 多选一、嵌套
六、运算符的优先级不用记,学会运用小括号。



