一、基本转义字符
含义:具有特殊意义的字符本身
字符 含义 \" 表示一个双引号字符 \' 表示一个单引号字符 \\ 表示一个斜杠字符 \n 表示换行 \t 表示水平制表
print():输出
println():输出+换行
java
System.out.println("\"1122\"");
System.out.println("\'2233\'");
System.out.println("\\3344\\");
System.out.print("1122\n");
System.out.print("2233\n");
System.out.println("3*3=9\t3*4=12\t3*5=15");
System.out.println("4*3=12\t4*4=16\t4*5=20");
二、常量
含义:程序执行过程中不可发生改变的量
分类:
- 数字字面量:程序中出现的数字
整数数字默认int类型
小数数字默认double类型
2. 字面值常量:使用双引号括起来的内容
System.out.println("123");
3. final:使用final修饰的变量
final int MAX_LENGTH = 100;
System.out.println(MAX_LENGTH);命名拓展:
大驼峰命名法/帕斯卡命名法:
法则:单词首字母大写
作用:类
**ps:**public class HelloWorld{}
小驼峰命名法:
法则:除了第一个单词,其余的单词首字母大写
作用:方法、变量
**ps:**int curCapacity = 0;
常量命名法:
法则:所有字母大写,单词之间使用下划线隔开
作用:常量
**ps:**final int MAX_LENGTH = 100;
三、Java的执行语句
1.分类
顺序语句:方法里的代码从上往下执行
分支语句:条件成立就执行某个功能
2.1 if分支
2.2 switch分支
循环语句:条件成立就重复性的执行某个功能
3.1 for循环
3.2 while循环
3.3 do-while循环
特殊的流程控制语句
4.1 break
4.2 continue
4.3 return
4.4 label
2.分支语句
简单if分支
语法结构:
if(表达式){
...代码块...
}
理解:表达式的结果必须是boolean类型
true - 执行代码块
false- 跳过if分支,执行if以外的代码
举例:
javaif(结果为boolean型){ System.out.println("...代码块..."); } System.out.println("if以外的代码");
小结:if(){}要么进入,要么不进入
复杂的if分支
输入体重与身高,计算健康值
人类的健康值在20-25的数值内为健康
javaimport java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入体重(Kg):"); double weight = scan.nextDouble(); System.out.println("请输入身高(M):"); double height = scan.nextDouble(); double health = weight/(height*height); if(health>20 && health<25){ System.out.println("护士说:\"健康,保持现有状态\""); } } }
if...else...分支
语法结构:
if(表达式){
...代码块...
}else{
...else代码块...
}
理解:
表达式的结果必须是boolean类型
true - 执行代码块
false- 执行else代码块
举例:
javaif(false){ System.out.println("...代码块..."); }else{ System.out.println("...else代码块..."); } System.out.println("if分支以外的代码块");
小结:if...else...二选一的情况下使用
输入成绩,显示是否及格
javaimport java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入分数:"); double score = scan.nextDouble(); if(score > 60){ System.out.println("及格"); }else{ System.out.println("挂科"); } } }
小结:if可以判断区间,也可以判断复杂条件,只要是表达式的结果是boolean就行。
多重if分支
语法结构:
if(表达式1){
...代码块1...
}else if(表达式2){
...代码块2...
}else if(表达式n){
...代码块n...
}else{
...else代码块...
}
理解:
从上往下判断表达式,哪个表达式先为true,就执行对应的代码块,如果都不为true就执行else代码块
表达式的结果必须是boolean类型
true - 执行代码块
false- 执行else代码块
注意:else代码块根据需求可写可不写
实验:
javaif(false){ System.out.println("...代码块1..."); }else if(false){ System.out.println("...代码块2..."); }else if(false){ System.out.println("...代码块3..."); }else{ System.out.println("...else代码块..."); } System.out.println("if分支以外的代码");
4. 案例:通过键盘录入学生成绩,输出等级
javaimport java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入成绩:"); double score = scan.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("成绩异常"); } } }
小结:多重if分支在多选一的情况下使用
if分支嵌套
案例:运动会,百米赛跑跑入16秒内的学生有资格进决赛, 根据性别分别进入男子组和女子组。
javaimport java.util.Scanner; public class Test{ public static void main(String[] args){ 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("女")){//判断两个字符串的内容是否相同(sex和"女") System.out.println("恭喜进入到女子组决赛"); }else{ System.out.println("性别异常"); } }else if(score>=16){ System.out.println("你被淘汰了,重在参与"); }else{ System.out.println("成绩异常"); } } }
小结:if可以无限层嵌套
注意:嵌套最好不要超过3层,嵌套越多可读性越差
switch分支的使用
语法结构:
switch(表达式){
case 值1:
...代码块1...
break;
case 值2:
...代码块2...
break;
case 值n:
...代码块n...
break;
default:
...default代码块...
break;
}
理解:
表达式的结果分别给值1、值2、值n比较,哪个相同就执行对应的代码块
如果都不相同就执行default代码块
default代码块根据需求可写可不写
break表示跳出当前分支语句
实验:
javaswitch(50){ 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分支以外的代码");
小结:switch是比较表达式的结果和case后面的值是否相同
switch分支的深入
case的值不允许相同。
default可以省略(相当于多重if里的else{})
break可以省略,但在switch底层逻辑中表达式的值与case进行比较,当值相同后,进入语句中不会在进行比较,因此会继续向下执行,直到再次遇到 break后才会跳出switch。
default的位置不一定,但是为了可读性最好放在最后。
表达式值的类型byte、short、int、char、String(JDK1.8)、枚举(JDK1.5)。
原因:switch底层只识别int值
- byte --> int 自动转型
- short -> int 自动转型
- int --> int 直接使用
- char --> int 获取字符的码值
- String-> int 获取字符串的hash码(获取字符串中多个字符的码值 + 散列算法,算出来的结果就是hash值)
- 枚举 --> int 获取枚举对象的编号
举例:输入年和月,输出当月的天数
javaimport java.util.Scanner; public class Test{ public static void main(String[] args){ 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: 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、char、String(JDK1.8)、枚举(JDK1.5)
应用场景的区别:
if:判断区间、判断复杂条件
switch:判断单个值是否相同