第二章、运算符

运算符

1.算数运算符(重点)

+(加)、-(减)、*(乘)、/(除)、%(取余)
 
注意事项:
    1.当两个整数进行除法运算时候,结果只取整数部分,小数部分舍弃。
    2.当希望结果中保留小数部分,具体方法如下:
        a.将其中一个操作数强转为double类型在做运算
        b.将其中一个操作数乘以1.0提升为double类型再运算(推荐)
    3. 0不能作为除数,否则产生 java.lang.ArithmeticException(算数异常): / by zero
        但是0.0可以做除数但结果是无穷大的,因此以后开发中避免使用0和0.0作为除数。
 
 
经验分享:
    a.当+两边的操作数中只要有一个字符类型,则按照字符连接符来处理,结果依然是字符
    b.将+两边的操作数都不是字符串时,则按照算数运算符来处理。

2.字符串连接运算符(重点)

“+”可以是实现字符串的连接。同时可以实现字符串与其他数据类型的相连。

3.自增减运算符(重点)

++(自增)、--(自减)
 
 
+ 表示加法运算   ++ 表示自增,也就是让当前变量自身的数值加1.
- 表示减法运算   -- 表示自减,也就是让当前变量自身的数值减1.
 
ia + ib     ia++;
 
++(--)可分为前++ 和后++(--)
 
 
 
++ia 当++在前面的时候先进行加1的操作,然后再进行其他运算;
ia++ 当++再后面的时候先其他运算,然后再进行加1的操作
 
--ia 当--在前面的时候先进行减1的操作,然后再进行其他运算;
ia-- 当--在后面的时候先进行其他运算操作,然后再进行减1;
 
 
 
要求大家掌握的方法:
    单独使用变量进行自增减的操作,建议尽量不要与其他运算符混合使用

4.赋值运算符(重点)

=、+=、-=、*=、/=、%=
 
赋值运算符将右边表达式的运算结果赋值给左边变量的运算符
 
 
<1>简单赋值
    =  表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖该变量原来的数值。
 
<2>复合赋值
    +=、-=、*=、/=、%=

5.关系/比较运算符(重点)

>、<、==、<=、!=、>=
 
比较运算符是用来判断两个表达式或值大小关系的运算符。
 
>  表示是否大于运算符 
<   表示是否小于运算符
==  表示是否等于运算符
<=  表示是否小于等于运算符
!=  表示是否不等于运算符
>=  表示是否大于等于运算符
 
关系运算符参与的表达式最终结果为boolean类型,  true(真) 和false(假)

6.逻辑运算符(重点)

逻辑运算符操作数为boolean表达式
 
    Java提供的逻辑运算符有   &&(与)  ||(或)   !(非)
 
 
    &&(与)   表示逻辑与运算符,相当于“并且” ,同真为真,一假为假
 
    ||(或)  表示逻辑或运算符,相当于“或者”,一真为真,同假为假。
 
    !(非)    表示逻辑非运算符,相当于取反,真为假 ,假为真
 
 
&& 和 || 具备短路的特性: 如果通过第一个表达式的值即可得出最后的结果,则补计算第二个表达式。
 
 
短路的特性:
    逻辑与:若第一个条件为假则整个表达式一定为假,此时跳过第二个条件的执行。
    逻辑或:若第一个条件为真则整个表达式一定为真,此时跳过第二个条件的执行

7.条件/三目运算符(看情况而定)

<1>语法格式:
    条件表达式 ? 表达式1 : 表达式2
 
<2>执行流程
    判断条件表达式是否成立
        = 若成立,则执行表达式1
        = 若不成立,则执行表达式2

8.移位运算符(了解)

左移(<<)  、算数右移(>>)   、逻辑右移(>>>)
 
移位运算针对二进制移动
 
 
<<  -  表示左移运算符,用于讲该整数的二进制向左边移动,右边补0 (丢去最高位,0补最低位)
 
举例:
    5<<5
    0000 0101(5的二进制)
 
    0000 1010(第一次移动)
    0001 0100(第二次移动)
    0010 1000(第三次移动)
    0101 0000(第四次移动)
    1010 0000(第五次移动)    ---- 结果 160 = 128+32
 
 
>> -- 表示右移运算符,用于将整数的二进制向右移动,左边补符号位.
 
 
>>> -表示无符号右移运算符,忽略符号位,用于将整数二进制向右边移动,左边补0

9.位运算符(了解)

&按位与、 |按位或 、^按位异或、 ~按位非,按照二进制逐位进行二进制运算。
 
 
&按位与    -  用于将整数的二进制进行与运算 , 同1 为1  ,一0为0
 
    举例:
        5&8
        0000 0101
        0000 1000
    -------------------
        0000 0000  0
 
 
 |按位或
        一1为1,同0为0
 
    运算规则:  0|0 = 0 ;  0|1 = 1; 1|0 = 1 ;  1|1 = 1;
 
    举例
        5|8
        0000 0101
        0000 1000
        ---------------
        0000 1101   --结果13  
 
 
^按位异或
        相同为0  不同为1
    运算规则: 0^0 = 0;  0^1=1; 1^0 = 1; 1^1 = 0;
 
    举例:
 
        5^8
        0000 0101
        0000 1000
        ---------------
        0000 1101   ---13
 
~按位非
    按照二进制取反运算,1为0 ,0为1
 
    举例:
        ^8---
            0000 1000(二进制)
            1111 0111 (1为0 ,0为1)(现在是负的二进制,转换成十进制输出)
            0000 1000 (按位取反)
            0000 1001(加一)
            9           (是进制整数)
            -9          (前面添加符号)   
 
 
 
        ^-10----
            0000 1010       (-10的绝对值转换为二进制)
            1111 0101       (按位取反)
            1111 0110       (加一)
            0000 1001       (反码)
            9               (转换为十进制)
 
 
 
    举例(八位为例):
        7:0000 0111
        -7:1000 0111
 
    反码:
        正数的反码就是它本身
        负数的反码,就是将原码的非符号部分,每一位取反
    举例:
        7:0000 0111
        -7:1111 1000
 
 
    补码:
        正数的补码也是它本身
        负数的补码,符号位不变,其余每一位取反之后,最后加一(反码+1)
 
        举例:
            7:0000 01111
            -7:1111 1001

10.运算符优先级

(1) () 的优先级极高
(2) = 的优先级极低
(3) * / %的优先级 高于 + -,同级的优先级谁在前谁先执行。

11.表达式

表达式其实就是由操作数和运算符组成的。
 
 
    例如:
        int a = 10;    int b = 5-3;
        a>b             true && false;
原文地址:https://www.cnblogs.com/borntodie/p/14092701.html