码迷,mamicode.com
首页 > 其他好文 > 详细

运算符

时间:2016-05-22 16:36:23      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

逻辑运算符
&(与)两边为true则为true,否则false
|(或)任意一边为true则为true
^(异或)两边不同则为true,两边相同则为false
!(非)原先为true则为false,原先为false则为true
&&(双与)两边为true则为true,否则false
||(双或)任意一边为true则为true

&&和&的区别:
短路问题:
&&先执行左边,如果根据左边就可以得出结论的话就不会执

行右边的操作和判断,直接输出判断结果。&会坚持将两边都

走完。
||和|也是这样的区别

举例子:
package test;

public class Test3 {
    public static void main(String[] args){
        int a=10;
        int b=20;
        int c=10;
        int d=20;        
        boolean flag=((a=a+1)>50)&&((b=b+1)

>50);
        boolean flag1=((c=c+1)>50)&((d=d+1)

>50);
        System.out.println("a="+a+"\nb="+b

+"\nc="+c+"\nd="+d);
    }

}
得到的a=11,b=20,c=11,d=21

^(异或):
两边相同则为false两边不同则为true
!(非):
针对一个元素,为true为变成false,为false则变成true

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

package test;

public class Test4 {
    public static void main(String[] args){
        /**
         求3位与,位或,位异或4的结果
         求~3的结果(按位取反)
         注意:二进制的运算都是针对补码进行操

作的
        
        正数的原反补都是一样
        0代表false,1代表true,就是和逻辑运算

符的与或非异或差不多了
        
    3:    00000000    00000000    

00000000    00000011
    4:    00000000    00000000    

00000000    00000100
    
    
 3&4:
         00000000    00000000    

00000000    00000000    转成十进制得到 0
 3|4:
         00000000    00000000    

00000000    00000111    转成十进制得到7
 3^4:    
         00000000    00000000    

00000000    00000111    转成十进制得到7
 ~3:    
 补码:        11111111    11111111    

11111111    11111100
 反码:        11111111    11111111    

11111111    11111011
 原码:        10000000    00000000    

00000000    00000100    得到-4
 
             
 再写一个例子:
     3&-4
      3:    
              00000000    00000000    

00000000    00000011
      -4:
      原:    10000000    00000000    

00000000    00000100
      反:    11111111    11111111    

11111111    11111011
      补:    11111111    11111111    

11111111    11111100
     
 得到:
     补:        00000000    00000000    

00000000    00000000    得到:0
         
         
     ^位异或的特点:
         a对b进行了异或操作两次相当于没有进行

对b的异或操作。
     以3^4^4为例子:
     3:    00000000    00000000    

00000000    00000011
    4:    00000000    00000000    

00000000    00000100
第一次: 00000000        00000000    

00000000    00000111
    4:    00000000    00000000    

00000000    00000100
第二次: 00000000        00000000    

00000000    00000011
可以发现,对同一个变量位异或2次就相当于没有异或
      
         */
    
        System.out.println(3|4);
        System.out.println(3^4);
        System.out.println(~3);
        System.out.println(3&(-4));
    }
    

}


运算符

标签:

原文地址:http://www.cnblogs.com/aigeileshei/p/5516869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!