Java语法基础(二)运算符

一、运算符

1、算数运算符:+、-、*、/、%

      1)双目运算符:二元运算符,参加运算的对象有两个(+、-、*、/、%)

      2)单目运算符:一元运算符,参加运算的对象只有一个(+、-)

      3)结合性:运算方向

注意1:整数的除法:只取商 ==》 5 / 2 = 2

      注意2:取余运算符:% ==》 5 % 2 = 1

     

2、关系运算符(比较运算符):> >= == !=   运算结果是逻辑值(true/false)

      10>5 ==》true

      5<=2 ==》false

强调:==和=的区别:前者是等于,后者是赋值

 

3、逻辑运算符:&&  ||  !

      1)&&(与),||(或):双目运算符

           表达式1 && 表达式2:当"表达式1"和"表达式2"都为真时,结果为真

表达式1 || 表达式2:当"表达式1"和"表达式2"有一个为真时,结果为真

强调:&&和||运算的短路现象

A、&&运算的短路:当"表达式1"为假时,将不运算"表达式2"

int a =10,b = 2,k;

(a>12) &&( (k=b*2)>0)

B、||运算中的短路现象:当"表达式1"为真时,将不运算"表达式2"

2) !(非运算):取反,单目运算符,放在运算符对象的左边。真的反为假,假

的反为真

 

4、赋值运算符:=

      变量名 = 表达式

      注意:在“=”的左边不能使表达式和常量

           a+b = 20,20 = a+b都是错的

 

5、条件运算符:? :   是Java中唯一一个三目运算符

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

运算效果是:首先运算"表达式1",若结果为真,则选择"表达式2"的值作为整个条件表达式的值;若结果为假,则选择"表达式3"的值作为整个条件表达式的值

flag = (a%2==0)?true:false;

 

6、位运算符:二进制位的运算符

 

十进制----二进制



十进制

27

26

25

24

23

22

21

20

15=8+4+2+1

0

0

0

0

1

1

1

1



位运算符:

(1)按位与(&):对应位都为1时,结果为1,否则为0.

      15&10=00001111&00001010=00001010=10

(2)按位或(|): 对应位上有一位为1,结果为1,对应位都为0时结果为0.

      15|10=00001111|00001010=00001111=15

(3)按位异或(^):对应位不同,结果为1,对应位相同,结果为0

      15^10=00001111^00001010=00000101=5

(4)按位取反(~):单目运算符,0的反是1,1的反是0

      ~10=~00001010=11110101=-11

自己了解:原码、反码、补码

(5)左移运算符(<<):运算对象<<左移的位数

      在左移的时候,右边移除的部分为高位,舍弃,右边补零



十进制

27

26

25

24

23

22

21

20

10=8+2

0

0

0

0

1

0

1

0

10左移1位:10*21

0

0

0

1

0

1

0

0

10左移2位:10*22

0

0

1

0

1

0

0

0



注:对于正整数和无符号数,左移n位就等于让运算的对象乘以2的n次方

(6)右移运算符(>>): 运算对象>>右移的位数

      在右移时,右边(低位)移出的位舍弃,左边(高位)如果是正整数或无符号数,补零;如果是负整数,补1.



十进制

27

26

25

24

23

22

21

20

10=8+2

0

0

0

0

1

0

1

0

10左移1位:10*21

0

0

0

0

0

1

0

1

10左移2位:10*22

0

0

0

0

0

0

1

0



注:对于正整数和无符号数,左移n位就等于让运算的对象除以2的n次方(不能整除时,取商,不要余数)

 

二、标准输入(重点)

从键盘将数据输入到程序中

Scanner类:专门用来进行数据输入

Scanner input = new Scanner(System.in);  //创建一个输入对象input

int a;

System.out.println(“请输入一个整数”);  //提示输入语句,可以提高程序的可读性

a = input.nextInt();  //从键盘输入一个整数给变量a

……

input.close();  //创建一个输入对象,使用之后要将其关闭

 

三、运算符的优先级和结合性

1)优先级

(1)单目运算符的优先级最高

(2)java程序中,赋值运算符的优先级最低

 

四、自加、自减运算

1)++:自加运算法,运算对象自己给自己加1

      int a=5, b=3;

      a++;    //a=a+1

      ++a;    //a=a+1

(1)作为独立的一条语句,前缀和后缀的运算效果没有区别

(2)若在表达式中就有区别:

      k=a++*b;  //k=15,a=6;先使用a的值,再给a+1

      k=++a*b;  //k=18,a=6;先给a+1,再使用a的值

2)--:自减运算符,运算对象自己给自己减1

      运算方式同++

 

五、复合赋值运算符:优先级、结合性与“=”相同

1)+=、-=、*=、/=、%=

      a+=13;等价于a=a+13;

      a-=13;等价于a=a-13;

      ……

2)&=、|=、^=……