MyDay04
转移字符
含义:具有特殊意义的字符本身
符号 含义 \" 表示一个双引号的字符 \’ 表示一个单引号的字符 \\ 表示一个斜杠字符 \n 表示换行符 \t 水平制表 System.out.print(""); ---- 表示输出 System.out.println(""); -- 表示输出并换行
常量
含义:程序执行过程中不可发生改变的量
分类:
1.数字字面量:程序中出现的数字
整数数字默认int类型
小数数字默认double类型
2.字面值常量:使用双引号括起来的内容 3.final修饰的变量:最终变量-常量
final int i = 100;
System.out.prinln(i);
字面值常量和final修饰的变量: 存放在常量池中,并且常量池中的数据不能重复,直到项目结束时常量池中的数据才会被情况
Java的执行语句
分类:
1、顺序语句:方法中的代码从上往下执行
2、分支语句:根据某个条件执行某个功能
2.1 、if分支
2.2、switch分支
3、循环语句:某个条件成立就重复就执行某个功能
3.1、for循环
3.2、while循环
3.3、do-while循环
4、特殊语句的流程控制语句
4.1、break
4.2、contiue
4.3、return
4.4、lable
简单的if分支语句
语法结构:
if(表达式){
…代码块…
}理解: 表达式的结果必须是boolean类型 true - 执行代码块 false- 跳过if分支
if(表达式){}依据表达式的结果可进入,也可以不进入
复杂的if分支
案例一: 人类的健康值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)Scanner scan = new Scanner(System.in); System.out.println("请输入体重:"); double weight = scan.nextDouble(); System.out.println("请输入身高:"); double height = scan.nextDouble(); double health = weight/(height*height); if((health>20)&&(health<25)){ System.out.println("小护士说:\"健康,保持现有状态\""); }
案例二:古川伊织Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
Scanner scan = new Scanner(System.in); System.out.println("请输入Java成绩:"); double javaScore = scan.nextDouble(); System.out.println("请输入音乐成绩:"); double musicScore = scan.nextDouble(); if((javaScore>98&&musicScore>80)||(javaScore==100&&musicScore>70)){ System.out.println("奖励古川伊织法拉利玩具赛车一辆"); }
if可以判断区间
if可以判断复杂条件
if…else…语句
语法结构:
if(表达式){
…代码块…
}else{
…else代码块…
}理解: 表达式的结果必须是boolean类型 true - 执行代码块 false- 执行else代码块
小结:
if…else…二选一的情况下使用
多重if
语法结构: if(表达式1){ ...代码块1... }else if(表达式2){ ...代码块2... }else if(表达式n){ ...代码块n... }else{ ...else代码块... }
理解:
表达式的结果必须是boolean类型
从上往下判断,哪个表达式先成立(true),就执行对应的代码块
如果表达式都不成立,就执行else代码块
注意:else{}根据需求可写可不写
案例一:人类的健康值在 15-20的数值内为偏瘦 20-25的数值内为健康 25-30的数值内为偏胖 (健康值算法为:体重(Kg) / 身高(米)的平方) Scanner scan = new Scanner(System.in); System.out.println("请输入体重:"); double weight = scan.nextDouble(); System.out.println("请输入身高:"); double height = scan.nextDouble(); double health = weight/(height*height); 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("请输入成绩:"); 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
总结if:
1.if可以判断区间,也可以判断复杂条件,只要表达式的结果为boolean类型的值就ok
2.if(){} 要么进入要么不进入
3.if(){}else{} 二选一的情况下使用
4.if(){}else if(){}else{} 多选一的情况下使用
5.if支持无限层嵌套(嵌套三次以上可读性直线下降)
switch分支的使用
语法结构: switch(表达式){ case 值1: ...代码块1... break; case 值2: ...代码块2... break; case 值n: ...代码块n... break; default: ...default代码块... break; }
理解:
表达式的结果分别给值1、值2、值n比较
哪个相同就执行对应的代码块
如果都不相同就执行default代码块
default代码根据需求可写可不写
switch的使用
面试题: case的值可以相同吗? 不可以 default可以省略吗? 可以 break可以省略吗? 可以 default的位置一定要在最后吗? 不一定 表达式值的类型可以是什么? byte、short、int、char、枚举(JDK1.5)、字符串(JDK1.7) switch底层判断原理? switch中判断的数据类型只有int byte -- 自动向上转型成int short -- 自动向上转型成int char -- 获取字符的Unicode码 枚举 -- 获取对象在枚举中的序号 字符串-- 获取字符串的hash码
/** 需求:输入年和月,输出当月的天数 分析: 1、3、5、7、8、10、12月 -- 31天 4、6、9、11月 -- 30天 2月 -- 闰年29天、平年28天 闰年条件:年份被4整除且不能被100整除 或者 年份被400整除 */ import java.util.Scanner; public class Test04{ public static void main(String[] args){ Scanner mlxg = new Scanner(System.in); System.out.println("请输入年份:"); int year = mlxg.nextInt(); System.out.println("请输入当年的月份"); int month = mlxg.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 19:case 11: day=30; break; case 2: if(year%4==0&&year%100==0){ day = 29; }else{ day = 28; } break; default: System.out.println("不存在当前月份"); break; } System.out.println("您输入的年份和月份对应的天数为"+ day); } }
知识点:if vs switch
表达式的区别:
if:boolean
switch:byte、short、int、char、枚举、字符串
应用场景的区别:
判断区间、复杂条件 选 if
判断单个值是否相同 选 switch
Java中的循环
/** 知识点:Java中的循环 理解:条件成立,就重复性的执行某个功能 好处:解决代码的冗余 分类: 1.for循环 2.while循环 3.do-while循环 知识点:for循环 语法结构: for(表达式1;表达式2;表达式3){ ...代码块/循环体... } 理解: 表达式1 -- 初始化变量 表达式2 -- 判断条件(结果必须是boolean) 表达式3 -- 更新变量 执行步骤: 1.初始化变量 2.判断条件(结果必须是boolean) 2.1 true - 执行代码块,再更新变量,最后重复第2个步骤 2.2 false - 跳出整个循环语句
小结: 1.初始化变量不一定从0开始,具体根据需求而定 2.更新条件不一定是++,具体根据需求而定 3.循环中声明的变量的作用域只在该循环中