位运算和循环结构

1.位运算符。

(1)<<左移(变大):左边的数是操作数,右边的数位移的个数。

5<<2:  -》5*2*2

a.5转换2进制数:101

b.转成2进制数后,不足八位数补足8位:00000101

c,将八位的2进制数,左边移除2位:000101

d.移除位数后,不足八位数,右补0:00010100

e.将最终的二进制数转换为10进制数:20

(2)>>右移(变小):左边的数是操作数,右边的数位移的个数。

5>>2:

a.5转换2进制数:101

b.转成2进制数后,不足八位数补足8位:00000101

c,将八位的2进制数,右边移除2位:000001

d.移除位数后,不足八位数,左补0:00000001

e.将最终的二进制数转换为10进制数:1

(3)& 位与: 位数对齐运算,有0则为0,全1才为1

5&2:

a.将左右两边的数转换为二进制数:101, 10

b,将二进制数不足八位转换为八位数将上下对齐:

00000101

00000010

c.位数对齐运算,有0则为0,全1才为1:        0000000 0

d.将结果的二进制数转换10进制:0

(4)|  位或: 位数对齐运算,有1则为1,全0才为0

5|2:

a.将左右两边的数转换为二进制数:101, 10

b,将二进制数不足八位转换为八位数将上下对齐:

00000101

00000010

c.位数对齐运算,有1则为1,全0才为0:    00000 1 1 1

d.将结果的二进制数转换10进制:7

(5)^ 位异或: 位数对齐运算,相同为0,不同为1

5^2:

a.将左右两边的数转换为二进制数:101, 10

b,将二进制数不足八位转换为八位数将上下对齐:

00000101

00000010

c.位数对齐运算,相同为0,不同为1:00000 1 11

d.将结果的二进制数转换10进制:7

2.程序中的结构:顺序结构,选择结构,循环结构。

注:字符串与字符串的比较: 字符串变量名.equals("比较的值");

其它类型比较(int,double,boolean):  变量名1==变量名2;

3.if结构:单分支的选择问题

语法:if(条件){

语句块:

eg:int today=5;

if(today==5){

System.out.println("考试");

}

4.if-else结构:双分支问题

语法:if(条件){//true

语句块1;

}else{//false

语句块2;

}

eg:System.out.println("这周考试第一名的同学是男生吗?(y/n)");

//从键盘上接收值并用变量存下来

String answer=input.next();

//用if-else结构

if(answer.equals("y")){

System.out.println("恭喜你获得第一名,给你介绍一个女朋友");

}else{

System.out.println("恭喜你获得第一名,给你介绍一个男朋友");

}

5.多重if结构:多分支问题。最多只能执行一个分支。

语法:if(条件1){

语句块1;

  }else if(条件2){

语句块2;

  }else if(条件3){

语句块3;

  }else{

  }

注:(1)在多重if选择结构中,if块有且仅有一个,else if块可以有1到多个,else有且仅有0个到1个。

(2)在多重if选择结构中,如果是作区间判断问题,分支之间不能互换位置。

(3)在多重if选择结构中,如果是等值判断问题,分支之间可以互换位置。

eg:System.out.println("请输入考试成绩:");

//从键盘上接收考试成绩并用变量存下来

double score=input.nextDouble();

//用多重if选择结构

if(score>=90){

System.out.println("优");

}else if(score>=80){

System.out.println("良");

}else if(score>=60){

System.out.println("合格");

}else{

System.out.println("不合格,抄写代码");

}

6.Switch结构:多分支等值判断问题

语法:switch(表达式){

case 值1:

语句块1;

break;//跳出当前结构

case 值2:

语句块2;

break;

case 值3:

语句块3;

break;

...

default:

break;

注:(1)表达式的数据类型:byte,short,int,char,String(在Jdk1.6以上版本支持)。

(2)case块的数量没限制,default块有且仅0个到1个。在同一个Switch结构中,case后面的常量 值不可以相同。

(3)一般情况下,每个case块后面都有break;如果case块中没有break,它只判断第一次,一直会执行,直到遇到break或遇到结尾的}才会执行完。break;//跳出当前结构。

(4)case块或default块换个位置无影响。

eg:System.out.println("请输入今天是星期几?(1-7)");

//从键盘上接收一个int值并用变量存

int today=input.nextInt();

switch(today){

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;

default:

System.out.println("喝水");

break;

}

7.多重if VS  switch

相同点:都可以解决多分支的等值判断问题。

不同点:switch只可以用来解决多分支的等值判断问题。多重if可以用来解决所有多分支问题。

多分支的区间判断的问题只能用多重if。

8.嵌套选择结构:在一个选择结构中可以完整嵌套另一个选择结构。嵌套要正确。

嵌套的层次无要求。可以嵌套任意层。

eg:System.out.println("请输入你的成绩:");

double time=input.nextDouble();

//嵌套的选择结构

if(time<10){

System.out.println("请输入你的性别:");

String sex=input.next();

if(sex.equals("男")){

System.out.println("恭喜你,进入男子级决赛");

}else{

System.out.println("恭喜你,进入女子级决赛");

}

}else{

System.out.println("谢谢参与");

}

你可能感兴趣的:(位运算和循环结构)