算术运算符:

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

++,--运算符的使用:

单独使用:
放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。

赋值运算符:

=,+=,-=

+=,-=这类的运算符,隐含了一个强制类型的转换。

比较运算符:

==,!=,>,>=,<,<=

特点:无论你的操作是简单还是复杂,结果是boolean类型。

逻辑运算符:

&,|,^,!

特点:逻辑运算符一般用于连接boolean类型的表达式或者值。

总结:

&逻辑与:有false则false。

|逻辑或:有true则true。

^逻辑异或:相同为false,不同为true。

!逻辑非:非false则true,非true则false。

特点:偶数个不改变本身。

&&和||  &和|

最终结果一样

&&遇到false就不向右继续了,

位运算符:

&,|,^,~

注意:要做位运算,系统是将数据转换为二进制进行运算的。

这里以3和4为例:

System.out.println(3 & 4);
System.out.println(3 | 4);
System.out.println(3 ^ 4);
System.out.println(~3);

输出:

&位与运算:有0则0。
        00000000 00000000 00000000 00000011
       &00000000 00000000 00000000 00000100
        -----------------------------------
        00000000 00000000 00000000 00000000
        结果是:0
        
    |位或运算:有1则1。
        00000000 00000000 00000000 00000011
       |00000000 00000000 00000000 00000100
        -----------------------------------
        00000000 00000000 00000000 00000111
        结果是:7
        
    ^位异或运算:相同则0,不同则1。
        00000000 00000000 00000000 00000011
       &00000000 00000000 00000000 00000100
        -----------------------------------
        00000000 00000000 00000000 00000111
        结果是:7
        
    ~按位取反运算符:0变1,1变0
        00000000 00000000 00000000 00000011
       ~11111111 11111111 11111111 11111100 (补码)
       
       补码:11111111 11111111 11111111 11111100
       反码:11111111 11111111 11111111 11111011
       原码:10000000 00000000 00000000 00000100
        结果是:-4

异或的小特点:

^的特点:一个数据对另一个数据位异或两次,该数本身不变。

比如: a^a^b 的结果还是b

<<,>>,>>>

<<:左移 左边最高位丢弃,右边补齐0
>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
>>>:无符号右移 无论最高位是0还是1,左边补齐0

一般源码中用的比较多,例如

计算:2 * 8
  2 << 3

class OperatorDemo3 {
    public static void main(String[] args) {
        //<< 把<<左边的数据乘以2的移动次幂
        System.out.println(3 << 3); //3*2^3 = 3*8 = 24;
    
        //>> 把>>左边的数据除以2的移动次幂
        System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6
        System.out.println(24 >>> 2);
        
        System.out.println(-24 >> 2); 
        System.out.println(-24 >>> 2);
    }
}
/*
    计算出3的二进制:11
        00000000 00000000 00000000 00000011
    (000)00000 00000000 00000000 00000011000
        
    >>的移动:    
    计算出24的二进制:11000
        原码:10000000 00000000 00000000 00011000
        反码:11111111 11111111 11111111 11100111
        补码:11111111 11111111 11111111 11101000
        
        11111111 11111111 11111111 11101000
        1111111111 11111111 11111111 111010(00) 补码
        
        补码:1111111111 11111111 11111111 111010
        反码:1111111111 11111111 11111111 111001
        原码:1000000000 00000000 00000000 000110
        
        结果:-6
        
    >>>的移动:
        计算出24的二进制:11000
        原码:10000000 00000000 00000000 00011000
        反码:11111111 11111111 11111111 11100111
        补码:11111111 11111111 11111111 11101000
        
        11111111 11111111 11111111 11101000
        0011111111 11111111 11111111 111010(00)
        
        结果:
*/

三目运算符:

格式:比较表达式?表达式1:表达式2;

比较表达式:结果是一个boolean类型。

执行流程:
根据比较表达式的计算返回一个true或者false。
如果是true,就把表达式1作为结果。
如果是false,就把表达式2作为结果。

例子:

     int a1 = 5;
        int b1 = 6;
        System.out.println((a1>b1)? a1:b1);
    //当然也可以进行嵌套操作

 键盘录入:

import java.util.Scanner;
public class scanner {
    public  static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入一个数据:");
        int x = sc.nextInt();

        System.out.println("你输入的数字是:"+x);

    }


}

 

posted on 2019-03-24 09:41  睡觉的阿狸  阅读(266)  评论(0编辑  收藏  举报