Java 每天学习一点点之运算符

来源:互联网 发布:太空工程师 编程 编辑:程序博客网 时间:2024/05/02 01:29

特别声明:如下内容均来自于不同网络课程视频或书籍,整理合并完成。 如果有整理错误,忘及时指出,共同进步,不胜感激。

Java 入门之运算符

Java 运算符 (Operator)

1. 赋值运算符 (Assignment Operators)

  整数类型:顾名思义,将值赋予给一个变量,例如将 5 赋值给 int 型变量x。 即 x = 5; 等号右边   的值给等号左边的变量。

2. 一元运算符 (Monadic Operators)

   一般来讲,运算符左右都有操作数,例如 a + b,我们称 a,b 为操作数。但java中还存在一种情
   况,运算符只有一个操作数。例如 -1; 表示负3。

3. 算数运算符 (Arithmetic Operators)

   加减乘除。 例如: a + b

4. 关系运算符 (Relational Operators)

   等于,不等于,大于,小于,大于等于,小于等于。 例如: a >= 7;

5. 逻辑运算符 (Logical Operators)

   或(&& / &),与(|| / |),非(!)。 例如: a && b。 通常我们使用 &&,|| 这两种形式。 区别:

    public static void main(String[] args) {    int a = 10;    int b = 0;    if(a > 0 || (a/0) > 2)    {        System.out.print("Hello World");    }}       output: Hello World        public static void main(String[] args) {    int a = 10;    int b = 0;    if(a > 0 | (a/0) > 2)    {        System.out.print("Hello World");    }   }   output:   Exception in thread "main" java.lang.ArithmeticException: / by zero   

   众所周知 0 不能做分母,所以 a/0 是不成立的,但使用 || 时并没有报错,因为计算机执行该语
   句时,发现第一个条件a>0 已经正确,或运算要求至少一 个满足条件即可。 但使用 | 时,程序
   异常报错,因为 | 判断完第一个条件后,继续判断第二条。因此从这种角度来说 || 提高了程序的
   效率。

6. 三元运算符 (ternary Operators)

   可以理解为 if…else的快捷方式。

   例如:

    public static void main(String[] args) {    int a = 3;    int b = 4;    if(a > b)    {        System.out.print(" a > b");    }    else    {        System.out.print(" a < b");    }}      output: a < b       public static void main(String[] args) {    int a = 3;    int b = 4;    String result;    result = (a > b) ? "a > b":"a < b";    System.out.print(result);}      output: a < b  

   这两段代运算的内容一样,但是第二段代码更简练一些。 以第二段代码为例, 我们比较 a,b 如
   何为真则 result的字符串内容为问号后第一个,如果为假,则将冒号后内容赋值给result。 三元
   运算符局限性在于 只能 比较两个操作数。

6. 位运算符 (Bitwise Operators)

   因为计算机只能识别 0 与 1. 因此在java中,数据都是以二进制(0 或 1)的形式存在。 例如:

    public static void main(String[] args) {    int b = 6;    System.out.println(Integer.toBinaryString(b));}      output: 110  

   这里我们将 int 型的变量 b 转化为二进制数。 因为int型数据长度为 32 位,所有得到如下内
   容:

   00000000 00000000 00000000 00000110 从左到右计算 0 * 2^0+1 * 2^1+1 * 2 ^2 = 2 +
   4 = 6

   位运算结果表

       | Number A | Number B |    (&)    |   (|)   |   (^)   |       |----------|----------|-----------|---------|---------|               |    0     |    0     |     0     |    0    |    0    |       |    0     |    1     |     0     |    1    |    1    |       |    1     |    0     |     0     |    1    |    1    |       |    1     |    1     |     1     |    1    |    0    |

   (&): 操作数全部为 1 则结果为 1, 否则值为 0
   (|): 操作数至少有一个值为 1 则结果为 1, 否则值为 0
   (^): 操作数值全部相同 则结果为 0, 否则值为 1

7. 运算符优先级 (Precedence of Java Operators)

  换句话说,运算顺序高低,比如在数学书中,乘法,除法 并列 且 高于加减法。但我们加入()时
  就可以改变运算顺序。 例如:

    public static void main(String[] args) {    int a = 1;    int b = 2;    int c = 3;    int d1 = a+b*c;    int d2 = (a+b)*c;    System.out.print("d1 = "+d1+","+"d2= "+d2);}    output:d1 = 7,d2= 9  

   因此不难看出,括号运算符的优先级大于乘除法运算符。下面连接为具体的优先级顺序表

  ![优先级顺序表](http://img.blog.csdn.net/20170207063746597?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUHJvZ3JhbVN0dWRlbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

未完待续。。。
更新时间 每周一,三,五,日。

0 0