5、位运算和流程控制和循环
一、上一个内容的复习
1、关系运算符、逻辑运算符(多个表达式的逻辑判断)
2、 短路的与或
3、条件运算符,用来做赋值操作
4、位运算符:对表达式以二进制位单位进行运算
十进制和二进制的转化
二、位运算符:
&按位与(先把数字计算成二进制的数,然后从右开始向做写,然后比对每一位的数值,有0就是0)
|按位或(先把数字计算成二进制的数,然后从右开始向做写,然后比对每一位的数值,有1就是1)
^按位异或(先把数字计算成二进制的数,然后从右开始向做写,然后比对每一位的数值,相同为0,不同为1)
<<左移:(7<<3:2向左移动三位 7*(2^3))
>>右移:(7>>3:2向右移动三位 7/(2^3))
三、一些小的知识点
1、工程-包(一般是公司域名的倒置)com.hoohui.test
2、我们现在使用的一般都是java.util包中的工具,这是java专门的工具包
3、流程控制要注意每一种情况都要考虑上,否则,程序一定会出现问题的
4、小方块变暗,则程序执行完;红色则是程序正在执行
四、流程控制
if(判断条件){ //执行语句块 } if(判断条件){//执行语句块}else{//不成立,执行语句块} if(判断条件){//执行语句块}else if(判断条件){执行语句块}
注意:
在实现功能的基础上去优化代码:两个相反的判断条件,我们可以用if-else
else:表示的是否则,不能单独出现,必须要和if配对才能出现
可以进行不断的嵌套
例子:张三考试成绩,大于90分,奖励他休息一天,否则老师罚他周末补课 /** * 张三考试成绩,大于90分,奖励他休息一天,否则老师罚他周末补课 */ System.out.println("请输入张三的成绩:"); Scanner s = new Scanner(System.in); int score = s.nextInt(); //原始 // if(score>90) { // System.out.println("可以吃鸡"); // } // if(!(score>90)) { // System.out.println("周末来补课"); // } //优化 if(score>90) { System.out.println("可以吃鸡"); }else { System.out.println("周末来补课"); }
例子:成绩>=80:良好 成绩>=60:中等 成绩<60:差 /**考虑东西要严谨 * 成绩>=80:良好 成绩>=60:中等 成绩<60:差 */ System.out.println("请输入张三的成绩:"); Scanner s = new Scanner(System.in); int score = s.nextInt(); // if(score>=80) { // System.out.println("良好"); // } //// if(score>=60) {修改程序,使之更加完善 // if(score>=60&&score<80) { // System.out.println("中等"); // } // if(score<60) { // System.out.println("差"); // } //对于上述代码进行优化 if(score>=80) { System.out.println("良好"); }else { if(score>=60) { System.out.println("中等"); }else { System.out.println("差"); } } //引入else if的优化 if(score>=80) { System.out.println("良好"); }else if(score>=60) { System.out.println("中等"); }else { System.out.println("差"); }
//if嵌套 例子:学校举办运动会,百米赛跑,成绩13s以内,有资格进入决赛, 根据性别,分别进入男子组和女子组。 System.out.println("请输入张三的百米成绩:"); Scanner s = new Scanner(System.in); int score = s.nextInt(); System.out.println("请输入张三的性别:"); String gender = s.next(); // System.out.println(score+"--"+gender); if(score<13) { //注意判断:string的数据类型会否相等用equals,不用== if(gender.equals("男")) { System.out.println("进入男子组"); }else { System.out.println("进入女子组"); } }else { System.out.println("淘汰"); }
还有一个流程控制语句是switch-case:只能做等值判断,并且有支持的数据类型
switch(要判断的变量){case 特定值://执行代码;break;default://执行语句;break;(最后一个的break可以省略)}
只能做等值判断 ;记住要有break的语句进行截住
//只能做等值判断
//支持的数据类型:byte short int char (后两个是java 1.7以后才支持的)String 枚举
Scanner s = new Scanner(System.in); int num = s.nextInt(); switch(num) { case 10: System.out.println("中了三等奖"); break; case 20: System.out.println("中了二等奖"); break; default: System.out.println("没中奖"); }
五、循环
重复做同样的意见事情
//例子:在控制台打印100遍“hello world” //2种方式:1、复制打印方式去打印2、用循环语句进行优化代码 //定义一个int 类型的变量, for(int i=0;i<100;i++) { System.out.println(i + "hello world"); }
一共有4种循环
for for-each(增强型for循环) while do-while
1*for循环
for(定义循环变量,循环条件,迭代条件){
//循环语句(也叫循环体)
}
2*循环四要素
初始化循环变量
循环条件
迭代(更新循环变量)
循环体
初始化循环变量,只执行一次;
判断循环条件是否成立,如果成立,执行循环体,如果不成立,跳出循环:执行多次
更新循环变量:多次执行
循环体:多次执行