第三节:运算符、判断和分支结构

目录

 

一、运算符

1.1算术运算符

1.2赋值运算符

1.3比较运算符

1.4逻辑运算符

1.5位运算符

1.6三元运算符

1.7运算符优先级

二、判断结构(if)

三、多分支结构(switch)

3.1switch语句格式

3.2、代码演示

3.3、switch语句执行顺序

3.4、switch练习

3.5、if和switch的区别


一、运算符

l运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种:

算术运算符

赋值运算符

比较运算符

逻辑运算符

移位运算符

1.1算术运算符

                  第三节:运算符、判断和分支结构

算术运算符的注意问题

如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。

对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。

例如:int x=3510;x=x/1000*1000;  x的结果是?

+”除字符串相加功能外,还能把非字符串转换成字符串 。

“+”运算符两侧的操作数中只要有一个String类型,一个是基本数据类型时,编译成class文件后,两个操作数就被连接成了一个新的String值

例如:System.out.println("5+5="+5+5);//打印结果是?

第三节:运算符、判断和分支结构

第三节:运算符、判断和分支结构

1.2赋值运算符

符号

  = , +=, -=, *=, /=, %=

示例:

  int a,b,c;  a=b=c =3;

  int a = 3;   a+=5;等同运算a=a+5;

思考:

  short s = 3;

s=s+2;

s+=2;    

有什么区别?    

s=s+2//编译失败,因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型。

s+=2//编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。

1.3比较运算符

第三节:运算符、判断和分支结构

1:比较运算符的结果都是boolean型,也就是要么是true,要么是false

2:比较运算符“==”不能误写成“=”

1.4逻辑运算符

第三节:运算符、判断和分支结构

  • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6
  • &”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
  • |”和“||”的区别同理,双或时,左边为真,右边不参与运算。
  • ^ ”与“|”不同之处是:当左右都为true时,"^"结果为false也可以理解为两边相同为false,不同为true

1.5位运算符

位运算符直接对二进制进行运算

位运算符

运算符

运算

范例

<<

左移

3 << 2 = 12 --> 3*2*2=12

>>

右移

3 >> 1 = 1  --> 3/2=1

>>>

无符号右移

3 >>> 1 = 1 --> 3/2=1

&

与运算

6 & 3 = 2

|

或运算

6 | 3 = 7

^

异或运算

6 ^ 3 = 5

~

反码

~6 = -7

位运算符的细节

<<

空位补0,被移除的高位丢弃,空缺位补0

>>

被移位的二进制最高位是0,右移后,空缺位补0

最高位是1,空缺位补1

>>>

被移位二进制最高位无论是0或者是1,空缺位都用0补。

&

二进制位进行&运算,只有1&1时结果是1,否则是0;

|

二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;

^

相同二进制位进行 ^ 运算,结果是01^1=0 , 0^0=0

不相同二进制位 ^ 运算结果是11^0=1 , 0^1=1

1.6三元运算符

三元运算:三目运算。

格式:表达式1 ? 表达式2 : 表达式3;

运算规则:

要求表达式1 运行的结果必须是一个boolean的结果。通过表达式1的这个结果确定到底是执行表达式2还是表达式3.

当表达式1为true,就把表达式2的结果作为三元运算的结果。

当表达式1为false的时候,把表达式3的结果作为三元运算的结果。

1.7运算符优先级

第三节:运算符、判断和分支结构

二、判断结构(if)

三种格式:

第一种:

if( 判断的条件  )   这里的条件必须最后是一个boolean值

{

判断成立后应该执行的动作;

}

第二种:

if( 判断的条件 )

{

判断条件成立后执行的语句;

}

else

{

判断不成立后执行的语句;

}

第三种:

if( 判断的条件 )

{判断成立后执行的语句;}

else  if( 判断的条件  )

{判断成立后执行的语句;}

else  if( 判断的条件  )

{判断成立后执行的语句;}

.....

else

{上述的所有判断都不成立之后执行的语句;}

三、多分支结构(switch)

3.1switch语句格式

要求这个表达式最后必须能计算出一个准确的结果,

并且这个结果的类型只能是 byte short int char  ,在JDK5 增加了 枚举类型  在JDK7增加了字符串类型

switch( 表达式 ) 

{

case 常量1:语句;break;

case 常量2:语句;break;

case 常量3:语句;break;

case 常量4:语句;break;

........

default :语句;break;

}

3.2、代码演示

//演示Switch的执行过程

class SwitchDemo

{

       public static void main(String[] args)

       {

              int a = 4;

 

              switch( a % 2 )

              {

                     case 0:

                            System.out.println("a是偶数");

                            break;

                     case 1:

                            System.out.println("a是奇数");

                            break;

                     default:

                            System.out.println("没这样的奇偶数");

                            break;

              }

              System.out.println("Hello World!");

       }

}

 

 

3.3、switch语句执行顺序

第三节:运算符、判断和分支结构

switch语句在执行的时候,JVM是通过switch中的表达式的计算结果和case后面的常量进行比较,相等就代表找到的执行switch后面case的入口,这时如果程序没有break关键字,这时JVM就会把从入口开始往下的所有代码,全部执行,而不管下面的case 后的常量是否和计算的结果一致。

 

3.4、switch练习

//需求:根据指定的天数,打印星期。

 

class SwitchTest

{

       public static void main(String[] args)

       {

              int day = 11;

 

              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;

             

              }

              System.out.println("Hello World!");

       }

}

 

 

 

3.5、if和switch的区别

if和switch可以互换,但是if它主要完成的条件的判断,switch主要是对数据的结果分支执行。

if可以在条件中书写判断的区间,而switch只能接受固定类型的数据,最后还要求必须是常量。

 

 

 

需要掌握:

  1. 算术运算:% ++ --
  2. 关系运算中的 ==  赋值的 = 的区别
  3. 逻辑运算中的 && &  ||  |  的区别
  4. 掌握怎么交换两个空间中的值
  5. 掌握if的三种结构使用。