一.转义字符
理解:具有特殊意义的字符本身
\" 表示一个双引号 \' 表示一个单引号 \\ 表示一个斜杠 \n 表示换行 \t 表示水平制表
二.常量
1.数字字面量:程序中出现的数字
整数数字默认int类型 小数数字默认double类型 int i = 100; i = 200; System.out.println(i); 注意:100和200是常量,i是变量
2.字面值常量:使用双引号括起来的内容
System.out.println("abc"); 注意:"abc"是常量
3.使用final关键字修饰的变量
final int I = 100; System.out.println(I); 注意: 1.I为常量 2.常量的命名规范:所有字母大写,单词与单词之间使用下划线隔开 ps:MAX_VALUE
扩容: 字面值常量和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 continue 4.3 return 4.4 lable
四.简单的if分支
语法结构: if(表达式){ ...代码块... }
理解: 表达式的结果必须是boolean类型 true - 执行代码块 false - 跳过if分支,执行if以外的代码 做实验: if(false){ System.out.println("...代码块..."); } System.out.println("if以外的代码"); 需求:如果三上悠亚的Java考试成绩大于98分,麻生希就能获得一辆法拉利作为奖励 Scanner scan = new Scanner(System.in); System.out.println("请输入考试成绩:"); double score = scan.nextDouble(); if(score > 98){ System.out.println("奖励三上悠亚法拉利玩具赛车一辆"); } 小结:if(){}表示可进入也可以不进去
五.复杂的if分支
需求1:人类的健康值在20-25的数值内为健康 (健康值算法为:体重(Kg) / 身高(米)的平方) Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):"); double weigth = scan.nextDouble(); System.out.println("请输入身高(M):"); double height = scan.nextDouble(); double health = weigth / (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("奖励麻生希烤肠2根"); } 小结: if分支可以判断复杂的条件,只要结果是boolean就行 if分支可以判断区间
六.if...else...
语法结构: if(表达式){ ...代码块... }else{ ...else代码块... }
理解: 表达式里的结果必须是boolean类型 true - 执行代码块 false - 执行else代码块 做实验: if(false){ System.out.println("...代码块..."); }else{ System.out.println("...else代码块..."); } System.out.println("if以外的代码块"); 需求:如果古川伊织Java考试成绩大于98分,老师就奖励他一个劳斯莱斯, 否则老师就罚他进行编码 Scanner scan = new Scanner(System.in); System.out.println("请输入考试成绩:"); double score = scan.nextDouble(); if(score > 98){ System.out.println("奖励古川伊织劳斯莱斯玩具赛车一辆"); }else{ System.out.println("何老师给古川伊织通宵补课"); } 小结:if...else...在二选一的情况下使用
七.多种if分支>
语法结构: if(表达式1){ ...代码块1...
}else if(表达式2){ ..代码块2... }else if(表达式n){ ..代码块n... }else{ ...else代码块... } 理解: 表达式的结果必须是boolean类型 从上往下判断表达式,哪个表达式先为true,就执行对应的代码块 如果都不为true,就执行else代码块 else代码根据需求,可写可不写 需求1:人类的健康值在 15-20的数值内为偏瘦 20-25的数值内为健康 25-30的数值内为偏胖 (健康值算法为:体重(Kg) / 身高(米)的平方) Scanner scan = new Scanner(System.in); System.out.println("请输入体重(Kg):"); double weigth = scan.nextDouble(); System.out.println("请输入身高(M):"); double height = scan.nextDouble(); double health = weigth / (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” 否则打印“成绩异常” 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分支
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("成绩异常"); } 小结: 1.if可以无限层嵌套 2.经验:if最好不要超过三层嵌套,因为可读性会下降
九.switch的使用
语法结构: switch(表达式){ case 值1: ...代码块1... break; case 值2: ...代码块2... break; case 值n: ...代码块n... break; default: ...default代码块... break; }
理解: 表达式的结果分别给值1、值2、值n比较,哪个相同,就执行对应的代码块 break表示跳出整个分支语句 如果表达式跟值1、值2、值n都不相同,则执行default代码块 根据需求default代码块可写可不写 做实验: 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个月马尔代夫旅游 如果获得第二名,将奖励苹果Pro笔记本电脑一部 如果获得第三名,将奖励移动硬盘一个 否则,何老师晚上给三上悠亚通宵补课 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("奖励苹果Pro笔记本电脑一部"); break; case "第三名": System.out.println("奖励移动硬盘一个"); break; default: System.out.println("何老师晚上给三上悠亚通宵补课"); break; } 小结:switch主要是判断单个值是否相同 */ public static void main(String[] args){ }}
1.switch的深入
面试题: case的值可以相同吗? 不可以
default可以省略吗? 可以 break可以省略吗? 可以 default的位置一定要在最后吗? 不一定 表达式值的类型可以是什么? byte、short、int、char、枚举(JDK1.5)、String(JDK1.7) 底层:switch只能识别int 底层实现: byte 自动向上转型成int short 自动向上转型成int int 直接就使用int值 char 获取字符的Unicode码 枚举 使用枚举类的对象编号,这个编号就是int类型 String 获取的字符串的hash码,这个hash码就是int类型 为什么switch底层只能识别int? 因为switch底层有个指令,这个指令只能接受int类型的数据 需求:输入年和月,输出当月的天数 分析: 1、3、5、7、8、10、12月 -- 31天 4、6、9、11月 -- 30天 2月 -- 闰年29天、平年28天 闰年:年份被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: if((year%4==0 && year%100!=0) || (year%400==0)){//闰年 day = 29; }else{//平年 day = 28; } break; } System.out.println(year + "年" + month + "月的天数为:" + day + "天"); 知识点:if vs switch 表达式的区别: if:只能是boolean类型 switch:byte、short、int、char、枚举(JDK1.5)、字符串(JDK1.7) */ public static void main(String[] args){ }}
十.使用循环的好处
知识点:for循环 语法结构: for(表达式1;表达式2;表达式3){ ...代码块/循环体... }
理解: 表达式1 -- 初始化变量 表达式2 -- 判断条件 表达式3 -- 更新变量 执行步骤: 1.初始化变量 2.判断条件,结果必须是boolean类型 2.1 true - 执行代码块,更新变量,再重复第2个步骤 2.2 false - 跳出整个循环语句 做实验:输出5遍"用良心做教育" for(int i = 1;i<=5;i++){ System.out.println("用良心做教育"); } for循环变形记: int i = 1; for(;i<=5;){ System.out.println("用良心做教育 - " + i); ++i;//++i;和i++;没区别 } System.out.println(i);//6 需求1:打印1~10的数字 for(int i = 1;i<=10;i++){ System.out.println(i); } 需求2:打印1~10的奇数数字 for(int i = 1;i<=10;i+=2){ System.out.println(i); } 需求3:打印10~1的数字 for(int i = 10;i>=1;i--){ System.out.println(i); } 需求4:打印10~1的偶数数字 for(int i = 10;i>=1;i-=2){ System.out.println(i); } 小结: 1.for循环中声明的变量其作用域只在该循环中 2.初始化变量不一定从1开始 3.更新变量不一定是++ 案例1:循环录入5次int类型的数字,输出总和 Scanner scan = new Scanner(System.in); int sum = 0; for(int i=1;i<=5;i++){ System.out.println("请输入第" + i + "个数字:"); int num = scan.nextInt(); sum += num; } System.out.println("总数为:" + sum); 案例2:循环录入小西满里惠同学的5门课成绩,计算平均分 Scanner scan = new Scanner(System.in); double sum = 0; for(int i=1;i<=5;i++){ System.out.println("请输入第" + i + "门成绩:"); double score = scan.nextDouble(); sum += score; } double avg = sum/5; System.out.println("平均分为:" + avg); 案例3:循环录入5次int类型的数字,输出最大值 Scanner scan = new Scanner(System.in); //假设第一个数字为最大值 System.out.println("请输入第1个数字:"); int max = scan.nextInt(); for(int i=2;i<=5;i++){ System.out.println("请输入第" + i + "个数字:"); int num = scan.nextInt(); if(max < num){ max = num; } } System.out.println("最大值为:" + max); */ public static void main(String[] args){ }}