运算符

  算术运算符

    单目:+(取正)-(取负)++(自增)--(自减)

    双目:+(加)-(减)*(乘)/(除)%(取余)

    三目:x > y ? true : false 说明:?前是一个布尔表达式:前后需要有两个表达式、对象、值;

  位运算符

    先转化成二进制再进行运算

    位与(&)位非(~)位或(|)位异或(^)

    移位运算符:<<、 >>(有符号右移) 、 >>>(无符号右移)

    左移1位相当于乘以2,右移1位相当于除以2,比乘除运算效率更高

  比较运算符

    ==、!=、>、<、>=、<=

    比较基本数据类型是比较值,比较引用类型是虚地址

    除了==、!=外,都只能比较基本数据类型

  逻辑运算符

    用于连接两个boolean类型的表达式

    &(与):前后条件都必须执行判断;条件必须同时满足

    &&(短路与):如果前面条件为false,后面条件就不执行判断,如果前面条件为true,后面条件继续执行判断

    |(或):前后条件都要执行判断,只要满足其中一个   

    ||(短路或):当第一个条件为true,后面条件不执行判断,如果前面条件为false,后面条件继续执行判断 

    ^(异或)!(非运算)

代码示例

 

 1 package summary3;
 2 
 3 //运算符 Operator
 4 public class Operator
 5 {
 6     void arithmetic()    //算术运算符
 7     {
 8         int i = 10;                                            //三目运算符
 9         String s = (i%2==0) ? ("i是偶数") : ("i是奇数");        //通过%2获取i的余数、判断是否为零
10         System.out.println(s);                                //如果等于零返回“偶数”,否则“奇数”
11     }
12     
13     void position()        //位运算符
14     {
15         int i1 = 10;        //转换为二进制后计算    0000 1010 =10
16         int j1 = i1<<1;        //左移1位(相当于乘2)    0001 0100 =20
17         int j2 = i1>>1;        //右移1位(相当于除2)    0000 0101 =5
18         int j3 = i1>>>1;    //无符号右移一位
19         System.out.println("j1="+j1+"  j2="+j2+"  j3="+j3);
20         
21         System.out.println(13&14);    //输出12
22         //13转换为二进制:0000 1101
23         //14转换为二进制:0000 1110
24         //12转换为二进制:0000 1100
25         //位与:第一个操作数的的第n位于第二个操作数的第n位,如果都是1,那么结果的第n为也为1,否则为0
26         
27         System.out.println(13|14);    //输出15
28         //13转换为二进制:0000 1101
29         //14转换为二进制:0000 1110
30         //15转换为二进制:0000 1111
31         //位或:第一个操作数的的第n位于第二个操作数的第n位,只要有一个是1,那么结果的第n为也为1,否则为0
32         
33         System.out.println(13^14);    //输出3
34         //13转换为二进制:0000 1101
35         //14转换为二进制:0000 1110
36         // 3转换为二进制:0000 0011
37         //异或:第一个操作数的的第n位于第二个操作数的第n位,只要有一个是0,那么结果的第n为也为1,否则为0
38         
39         System.out.println(~13);    //输出-14
40         // 13转换为二进制:0000 1101
41         //-14转换为二进制:1111 0010
42         //位非:操作数的第n位为1,那么结果的第n位为0,反之。        
43     }
44     
45     void compare()    //比较运算符
46     {
47         Integer ie1 = new Integer(123);
48         Integer ie2 = new Integer(123);
49         int i1 = ie1;    //包装类的自动拆装
50         int i2 = ie2;    //相同类型自动转换
51         System.out.println(i1==i2);        //基本类型比较的是具体值、判断条件成立:返回true
52         System.out.println(ie1==ie2);     //引用类型比较的是虚地址、判断条件不成立:返回false    
53     }
54     
55     void logic()    //逻辑运算符
56     {
57         if((1>0)&(1!=0))    //双与:&
58         System.out.println("与");//前后条件都必须执行判断;条件必须同时满足
59         
60         if((1<0)&&(1!=0))    //短路与:&&
61         System.out.println("短路与");//如果前面条件为false,后面条件就不执行判断,如果前面条件为true,后面条件继续执行判断    
62         
63         if((1<0)|(1!=0))    //或:|
64         System.out.println("或");//前后条件都要执行判断,只要满足其中一个   
65         
66         if((1<0)||(1==0))    //短路或:||
67         System.out.println("短路或");//当第一个条件为true,后面条件不执行判断,如果前面条件为false,后面条件继续执行判断
68         
69     }
70     public static void main(String[] args)
71     {
72         Operator o = new Operator();
73         o.arithmetic();    //算术运算符
74         o.position();    //位运算符
75         o.compare();    //比较运算符
76         o.logic();        //逻辑运算符
77     }
78 }