小小雷利

Satan's book

02_java运算符


                                                                  算术运算符

+                  正号
-                 负号
+                  加
-                 减
*                  乘
/                   除
%                 取模
++               自增
--             自减
+                 字符串相加


例子⑴:

int  x = 4270

x = x / 1000 * 1000

system.out.println(x);

/* 原理:x与1000都是int类型的数据,所以余数也是int类型*/

例子⑵: 自增(++)

int   a = 3,b;

b =  a++     //  a++ ; a=a+1


例子 字符串加号(+)

system.out.println(“haha”+“haha”)     // +是把2个字符串进行连接


例子 字符串加号(+)

int   a = 3,b;

b =  a++

system.out.pirntln(a+“,”+b) //  输出结果a=4;b=3

原理:字符串数据和任何数据使用+都是相连接,最终都会变成字符串










                                                                   赋值运算符


-=   +=   *=   /=


short  x = 4;

x = x + 5         // x;short类型, 5;默认为int类型,可能损失精度

x+=5              // 只是把5的值赋给x+,过程中计算机会自动转化数据类型










                                                                 比较运算符

==               相等于
!=               不相于
〈                 小于
  〉               大于
〈  =             小于等于
  〉=             大于等于


比较运算符的结果都是boolean型,也就是要么true,要么是false







                                                                 逻辑运算符(用于连接boolean类型的表达式)



& : AND(与)       只要两边的boolean表达式结果,有一个位false,那么结果就是 false。                                                                  
                             只有两边都为true,结果位true。

|  : OR(或)         只要两边有一个为true,结果为true。
                             只有两边都为false,结果为false。

^ : XOR(异或)     两边相同结果为false。
                              两边不同结果为true。

!  : NOT (非)       !true=false。


&& : AND(短路)   当左边为false,右边不运算。


||   : OR(短路)     当右边为true,右边不运算。




 



                                                              位运算符 (直接对二进制进行运算)     


>>   : 左移               原数据最高位
<<   : 右移               原数据最高位
>>>:  无符号右移      最高位0补
&     : 与运算
|      : 或运算
^     : 异或运算
~     : 反码


左移;右移列子: (<<  ;>>)


  3<<2=12       // 直接对二进制运算
 
           0000-0000 0000-00000 000-0000 0000-0011
          |
<<: 00|00-0000 0000-00000 000-0000 0000-001100  // 向左移动2位,移动后空位0补
          |        

  6>>2=1        // 直接对二进制运算

          0000-0000 0000-00000 000-0000 0000-0110
                                                                           |
>>:    000000-0000 0000-00000 000-0000 0000-01|10 //向右边移动2位,移动后空位0补
                                                                           |


与运算 列子;( & )

  6  & 3 = 2

    110
& 011
------------
    010   = 2


或运算 列子;( | )

  6 | 5 = 7
 
   110
| 101
---------
   111  = 7


异或运算 列子;( ^ )

  6 ^ 5 =3

    110
^ 101
----------
     011  = 3



练习题目; 对两个变量的值进行互换

int  n=3 ,m=8

temp = n;   //  通过第三方变量
n = m ;
m= temp;


n= n+m;    //  不通过第三方变量
m=n-m;
n=n-m;


n  = n ^ m   
m = n ^ m    // (n^m )^m

n = n ^m      //    n^( n^m)
 
 
 

posted on 2012-03-24 00:16  小小雷利  阅读(139)  评论(0编辑  收藏  举报

导航