05、转义符
1、概念
具有特殊意义的字符本身
" 表示一个双引号字符
’ 表示一个单引号字符
\ 表示一个斜杠字符
\n 表示换行
\t 表示水平制表(前面的输出内容位数为8的倍数,\t将输出8个空格。前面的输出内容位数不是8的倍数,\t将补足8位)public class Test { public static void main(String[] args) { System.out.println("123456\t前面内容有6位,补2个空格"); System.out.println("12345678\t前面内容有8位,加8个空格"); System.out.println("123456789012345\t前面内容有15位,补1个空格"); } }
2、常量
执行过程中不能发生改变的量
分类:
数字字面量:程序中出现的数字
整数数字默认int类型
小数数字默认double类型字面值常量:使用双引号括起来的内容
ps:System.out.println(“用良心做教育”);final:使用final修饰的变量
final int MAX_LENGTH = 100;
System.out.println(MAX_LENGTH );注意:变量MAX_LENGTH被final修饰后变为常量,就不可以再被赋值,否则在编译时会报错
public class Test02{ public static void main(String[] args){ final int MAX_LENGTH = 100; MAX_LENGTH = 200//编译不通过 } }
3、命名规则
大驼峰命名法/帕斯卡命名法 小驼峰命名法 常量命名法 法则 单词首字母大写 除了第一个单词,其余的单词首字母大写 所有字母大写,单词之间用下划线隔开 作用 类 方法、变量 常量 ps public class HelloWorld{} int curCapacity = 0 final int MAX_LENGTH = 100
4、Java执行语句
- 顺序语句:方法里的代码从上往下执行
- 分支语句:条件成立就执行对应的功能(if,switch)
- 循环语句:只要条件成立,就重复性的执行某个功能(for,while,do-while)
- 特殊的流程控制语句(break,continue,return,label)
简单的if分支
语法结构:
if(表达式){
…代码块…
}import java.util.Scanner; public class Test03{ public static void main(String[] args){ if(true){ System.out.println("...代码块...");//输出 } System.out.println("if以外的代码块");//输出 } }
复杂的if分支
import java.util.Scanner; public class Test03{ 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分支
从上往下判断表达式,哪个表达式先为true,就执行对应的代码块
如果都不为true,就执行else代码块
import java.util.Scanner; public class Test06{ 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分支
1.if允许无限层嵌套
2.项目中if最好嵌套不超过3层,因为超过3层后代码的可读性会很低
import java.util.Scanner; public class Test07{ 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("男")){//判断两个字符串内容是否相同 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("成绩异常"); } } }
Swich语句
语法结构:
switch(表达式){
case 值1:
...代码块1...
break;
case 值2:
...代码块2...
break;
case 值n:
...代码块n...
break;
default:
...default代码块...
break;
}表达式的结果分别于值1、值2、值n比较,哪个相同就执行对应的代码块。如果都不相同就执行default代码块。default代码块根据需求可写可不写,不影响语法规则。
break: 表示跳出整个switch分支
import java.util.Scanner; public class Test08{ public static void main(String[] args){ switch(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分支以外的代码..."); } }//50 //switch分支以外的代码
面试题
case的值可以相同吗?
不允许
default可以省略吗?
可以break可以省略吗?
可以default的位置一定要在最后吗?
不一定,但是最好放在最后,因为考虑到代码的可读性表达式值的类型可以是什么?
byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)
Switch的深入
switch底层判断数据的逻辑是什么?
switch底层是比较int值是否相同 byte --> int 自动转型
short -> int 自动转型
int —> int 直接使用
char --> int 获取字符的码值
字符串-> int 获取字符串的hash值(“abc” -> [‘a’,‘b’,‘c’] -> [97,98,99] -> 通过字符的码值+hash算法获取出的hash值)
枚举 --> int 获取枚举类里的对象编号(对象编号从0开始,对象编号是int类型)import java.util.Scanner; public class Test09{ 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; } if(day != 0){ System.out.println(year + "年" + month + "月的天数为:" + day + "天"); }else{ System.out.println("输入错误"); } } }
知识点:if vs switch
表达式的区别:
if – 只能放boolean
switch – byte、short、int、char、字符串、枚举
应用场景的区别:
if判断区间、复杂条件
switch判断单个值是否相同