Day 04
一、位运算(拓展,了解)
class Demo01 {public static void main(String[] args) {int a = 5;int b = 3;/*0000 0101|0000 0011==========0000 0111 = 7*/System.out.println(a | b); ?/*0000 0101&0000 0011==========0000 0001 = 1*/System.out.println(a & b); ?/*异或0000 0101^0000 0011==========0000 0110*/System.out.println(a ^ b);} }
二、流程控制(记住)
顺序结构
class Demo02 {public static void main(String[] args) {// 顺序结构,代码自上向下顺序执行System.out.println("Hello World!1");System.out.println("Hello World!2");System.out.println("Hello World!3");System.out.println("Hello World!5");System.out.println("Hello World!4");System.out.println("Hello World!6");System.out.println("Hello World!7");System.out.println("Hello World!" + a);int a = 8;} }
分支结构
循环结构
三、分支结构--if(掌握)
3.1 语法结构
if(判断条件){
条件为true的时候执行的代码
}
if java中的关键字
判断条件
可以直接书写boolean值
也可以是返回值是boolean类型的表达式 {}
满足条件--条件为true时候执行的代码
3.2 if
class Demo03 {public static void main(String[] args) {System.out.println("Hello World!");// 假设你穿越到了888年,只能带10元钱的东西,你想带什么过去int year = 88;/*if(年份是888年){我希望携带一些物品过去}*/ ?if(year == 888){System.out.println("我希望携带一些火锅丸子过去...");} ?// 判断一把刀是不是管制刀具int knifeLen = 155; ?if(knifeLen >= 220){System.out.println("这个刀子是管制刀具,要没收...");} ?if(knifeLen < 220){System.out.println("这个刀子不是管制刀具,可以携带...");}} }
3.3 if...else
if(判断条件){
代码块1
}else{
代码块2
}
if 是java中的关键字,开启条件判断
判断条件是一个boolean类型的结果
代码块1是满足if中条件时候执行的代码
else是java中的关键字,if条件为false的时候执行else后面的代码块2
案例01
class Demo04 {public static void main(String[] args) {System.out.println("Hello World!");int knifeLen = 150; ?// if...elseif (knifeLen >= 220){System.out.println("管制刀具");}else{System.out.println("非管制刀具");}} }
案例02
import java.util.Scanner; class Demo05 {public static void main(String[] args) {// 用户输入用户名和密码,判断是否成功登陆/*1、导入Scanner2、创建Scanner对象3、提示输入用户名4、获取用户名5、提示输入密码6、获取密码7、比较用户名和密码8、输出结果*/ ?int USERNAME = 123456789;int PASSWORD = 987654321;// 2、创建Scanner对象Scanner in = new Scanner(System.in);System.out.println("请输入QQ号码:");int username = in.nextInt(); ?System.out.println("请输入QQ密码,只能是数字:");int password = in.nextInt(); ?// 7、比较用户名和密码if((username == USERNAME) && (password == PASSWORD)){System.out.println(username + ",欢迎你.");}else{System.out.println("账号或者密码错误...");}} }
3.4 if...else if...
if(判断条件1){
满足条件1执行的代码
}else if(判断条件2){
满足条件2执行的代码
}else if(判断条件3){
满足条件3执行的代码
}。。。else{
以上条件都不成立执行此处的代码
}
整个if。。else if判断中只要有一个成立的条件,就执行里面的代码,代码执行结束后整个if判断就结束了
import java.util.Scanner; class Demo07 {public static void main(String[] args) {/*键盘录入一个数字(1--7),输出对应日期需要上课的课程1、导入Scanner2、创建Scanner对象3、提示输入日期1--74、获取日期5、使用if判断,输出这一天需要上的课程*/Scanner in = new Scanner(System.in);System.out.println("请输入查询星期几的课程(1--7)");int day = in.nextInt(); ?// 5、使用if判断,输出这一天需要上的课程 ?if(day == 1){System.out.println("今天是星期一,需要上语文课.");} else if(day == 2){System.out.println("今天是星期二,需要上数学课.");} else if(day == 3){System.out.println("今天是星期三,需要上英语课.");} else if(day == 4){System.out.println("今天是星期四,需要上体育课.");} else if(day == 5){System.out.println("今天是星期五,需要上语文课.");} else if((day == 6) || (day == 7)){System.out.println("今天是星期" + day + ",需要休息.");} else{System.out.println("您查询的课程不存在...");}// 键盘录入一个月份,判断是什么季节// 键盘录入一个年份,判断是不是闰年} }
输入月份显示季节
import java.util.Scanner; class Demo08 {public static void main(String[] args) {/*键盘录入一个数字(1--7),输出对应日期需要上课的课程1、导入Scanner2、创建Scanner对象3、提示输入月份4、获取月份5、使用if判断,输出这个月份所在的季节*/Scanner in = new Scanner(System.in);System.out.println("请输入查询的月份(1--12)");int month = in.nextInt();// 键盘录入一个月份,判断是什么季节 ?// 使用if判断,输出这个月份所在的季节if((month==3) || (month==4) || (month==5)){System.out.println("春天到了,万物复苏,又到了万物生长的季节...");} else if((month==6) || (month==7) || (month==8)){System.out.println("夏天到了,天气酷热,小龙虾哈啤酒是非常不错的消暑产品...");} else if(month>=9 && month<=11){System.out.println("秋天到了,秋高气爽,到了收货的季节...");} else if((month==12) || (month==1) || (month==2)){System.out.println("冬天到了,天气寒冷,杭州的冬天会给你留下深刻的印象...");} else{System.out.println("月份不存在...");}} }
3.5 if嵌套
if里面再书写if分支语句
if(条件1){
if(条件2){
执行满足条件1和条件2 的代码
}else{
执行满足条件1但不满足条件2的代码
}
}else{
执行不满足条件1的代码
}
3.5.1 乘车案例
import java.util.Scanner; class Demo10 {public static void main(String[] args) {/*模拟乘坐火车检票安检的过程*/ ?Scanner in = new Scanner(System.in); ?System.out.println("请出示你的车票(1=有票,0=无票):");int ticket = in.nextInt(); ?// 判断有没有车票,如果有就可以去安检if(ticket>=1){// 提示输入安检情况System.out.println("有没有携带违禁物品(true=有,false=无):");boolean isDanger = in.nextBoolean();// 判断安全情况if(isDanger){System.out.println("请跟我走一趟....");}else{System.out.println("安检通过,请排队候车...");} ?}else{// 无票,提示去买票System.out.println("请先去购买车票...");}} }
3.5.2 压岁钱案例
import java.util.Scanner; class Demo11 {public static void main(String[] args) {/*根据压岁钱判断你要干啥*/Scanner in = new Scanner(System.in);System.out.println("请问你是否有压岁钱:");boolean hasLuckyMoney = in.nextBoolean();if(hasLuckyMoney){// 有压岁钱的时候System.out.println("请输入收到压岁钱的金额:");int luckyMoney = in.nextInt();// 0--500去吃大餐,500-1000升级一下电脑配置,1000-10000买个自行车,大于10000就捐了if((luckyMoney>0) && (luckyMoney<=500)){System.out.println("收到了压岁钱很开心,准备请全村人吃大餐...");} else if((luckyMoney>500) && (luckyMoney<=1000)){System.out.println("收到了压岁钱很开心,升级一下电脑的配置...");} else if((luckyMoney>1000) && (luckyMoney<=10000)){System.out.println("收到了压岁钱很开心,买个自行车骑行去光明顶...");} else if(luckyMoney>10000){System.out.println("收到了压岁钱很开心,捐给更需要这个金钱的人...");}}else{// 没有压岁钱System.out.println("没有收到压岁钱说明你长大啦,可以给别人压岁钱<_>");} } }
四、分支语句之-switch(掌握)
转换、开关的意思
逐个进行匹配
switch(key){
case value1:
满足key==value1时候执行的代码
break;===终止switch的执行
case value2:
满足key==value2时候执行的代码
break;===终止switch的执行
。。。 。。。
default:
上面所有匹配都没成功时候执行的代码
break;===终止switch的执行
}
4.1 switch基本使用
import java.util.Scanner; class Demo13 {public static void main(String[] args) {/*根据星期几输出上课的内容1、导入Scanner2、创建Scanner对象3、提示输出星期几day4、获取输入的值5、使用switch判断输出课程内容*/Scanner in = new Scanner(System.in);System.out.println("请输入今天是星期几(1--7):");int day = in.nextInt();// 5、使用switch判断输出课程内容switch(day){case 1:System.out.println("今天是星期一,需要上语文课.");break;case 2:System.out.println("今天是星期二,需要上语文课.");break;case 3:System.out.println("今天是星期三,需要上语文课.");break;case 4:System.out.println("今天是星期四,需要上语文课.");break;case 5:System.out.println("今天是星期五,需要上语文课.");break;case 6:System.out.println("今天是星期六,需要上语文课.");break;case 7:System.out.println("今天是星期日,需要上语文课.");break;default:System.out.println("这个时间不存在...");break;}} }
4.2 case穿透
import java.util.Scanner; class Demo14 {public static void main(String[] args) {/*根据星期几输出上课的内容1、导入Scanner2、创建Scanner对象3、提示输入月份4、获取输入的值5、使用switch判断输出季节内容*/Scanner in = new Scanner(System.in);System.out.println("请输入月份(1--12):");int month = in.nextInt();// 5、使用switch判断输出季节内容switch(month){case 1:System.out.println("一月份是冬季,很冷");case 2:System.out.println("二月份是冬季,很冷");case 3:System.out.println("三月份是春季,很冷");case 4:System.out.println("四月份是春季,很冷");case 5:System.out.println("五月份是春季,很冷");case 6:System.out.println("六月份是夏季,很热");case 7:System.out.println("七月份是夏季,很热");case 8:System.out.println("八月份是夏季,很热");case 9:System.out.println("九月份是秋季,很热");case 10:System.out.println("十月份是秋季,很热");case 11:System.out.println("十一月份是秋季,很热");case 12:System.out.println("十二月份是冬季,很热");default:System.out.println("月份不存在");}} }
4.3 case穿透案例
import java.util.Scanner; class Demo14 {public static void main(String[] args) {/*根据星期几输出上课的内容1、导入Scanner2、创建Scanner对象3、提示输入月份4、获取输入的值5、使用switch判断输出季节内容*/Scanner in = new Scanner(System.in);System.out.println("请输入月份(1--12):");int month = in.nextInt();// 5、使用switch判断输出季节内容switch(month){case 1:case 2:case 12:System.out.println(month + "月份是冬季,很冷");break;case 3:case 4:case 5:System.out.println(month + "月份是春季,很冷");break;case 6:case 7:case 8:System.out.println(month + "月份是夏季,很热");break;case 9:case 10:case 11:System.out.println(month + "月份是秋季,很热");break;default:System.out.println("月份不存在");break;}} }
五、比较if和switch(掌握)
成绩案例
import java.util.Scanner; class Demo15 {public static void main(String[] args) {/*0 --59 不及格60--69 及格70--79 一般80--89 良好90--100 优秀*/Scanner in = new Scanner(System.in);System.out.println("请输入考试成绩(0--100):");int score = in.nextInt();if((score<0) || (score>100)){System.out.println("错误的分数");}else{// 合法的分数if(score >= 90){System.out.println("成绩优秀");} else if(score >= 80){System.out.println("成绩良好");} else if(score >= 70){System.out.println("成绩一般");} else if(score >= 60){System.out.println("刚刚及格");} else{System.out.println("不及格,体验一下男女混合双打...");}}} }
if中的判断条件可以使等于某个具体的值,也可以是一个范围
month==3
score>=90
switch中case后面的值只能是byte,short、int、char、String范围内的值
无法使用范围进行操作,数字范围过大,或者内容不确定且情况复杂的时候不能使用switch
数值较少,内容固定的情况下可以使用switch
常量的判定推荐使用switch
六、局部变量(掌握)
定义在方法中的变量
使用前必须先赋值---没有默认的值
作用范围只在当前方法里面
在同一个作用域中变量名字不能重复
生命周期是从创建到方法结束
class Demo16 {public static void main(String[] args) {/*定义位置在方法中使用前必须先赋值---没有默认的值作用范围只在当前方法里面在同一个作用域中变量名字不能重复生命周期是从创建到方法结束*/int age = 20;System.out.println("age=" + age);// int age = 22;// show();age = 33;}public static void show() {System.out.println("age=" + age);} }