zoukankan      html  css  js  c++  java
  • Java运算符及优先级(全)

    运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

    Java运算符分为以下几种:

    算术运算符:+,-,*,/,%,++,--

    赋值运算符:=

     扩展后的赋值运算符:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=

    • 位运算符:&,|,~,^,<<,>>,>>>

    比较运算符:>,>=,<,<=,==

    逻辑运算符:&&,&,||,|,!,^

    三目运算符:? :

    1、算术运算符

    1)+:加法运算符

    例如如下代码:

    int a = 1;

    int b = 2;

    int sum = a+b;

    System.out.println(sum); //sum的值为3

    另外,+还可以作为字符串的连接运算符。

    2)-:减法运算符

    例如如下代码:

    int a = 3;

    int b = 2;

    int sub = a-b;

    System.out.println(sub); //sub的值为1

    3)*:乘法运算符

    例如如下代码:

    int a = 5;

    int b = 6;

    int multiply = a*b;

    System.out.println(multiply ); //multiply 的值为30

    4)/:除法运算符

    例如如下代码:

    int a = 10;

    int b = 5;

    int div = a/b;

    System.out.println(div); //div的值为2

    注:如果除法运算符的两个操作数都是整数类型,则计算结果为整数,除数不可以为0,否则会引发异常;如果除法运算符的两个操作数中至少一个是浮点数,则计算结果也是浮点数,此时除数可以为0或0.0,得到的结果是正无穷大或负无穷大。

    5)%:求余运算符(取模运算符)

    例如如下代码:

    int a = 10;

    int b = 3;

    int mod = a%b;

    System.out.println(mod ); //mod 的值为1

    注:求余运算符的结果不一定总是整数。如果求余运算符的两个操作数都是整数,则第二个操作数不能为0(同除法运算规则);如果求余运算符的两个操作数中至少一个是浮点数,则第二个操作数可以是0或0.0,但求余结果是是非数:NaN。

    6)++:自加运算符

    ++自加运算符是单目运算符(一元运算符),只有一个操作数。运算符既可以放在操作数的左边也可以放在操作数的右边。如果把++放在左边,则先把操作数加1,然后再运算;如果把++放在右边,则先运算,然后再把操作数加1。

    自加运算符放在操作数左边的代码:

    int a = 2;

    int b = ++a + 3; //a先自加,然后再执行算术运算

    System.out.println(a); //a的值为3

    System.out.println(b); //b 的值为6

    自加运算符放在操作数右边的代码:

    int a = 2;

    int b = a++ + 3; //a先执行算术运算,再自加

    System.out.println(a); //a的值为3

    System.out.println(b); //b 的值为5

    7)--:自减运算符

    --自减运算符也是单目运算符(一元运算符),只有一个操作数。用法与++类似,只是将操作数的值减1;

    注:自加和自减只能用于操作变量,不能用于操作数值直接量、常量或表达式。例如3--是错误的!

    2. 赋值运算符

    赋值运算符用于为变量指定变量值。

    例如 String str = "java"; //为变量str赋值java

     3. 扩展后的赋值运算符

    +=:对于a+=b,即对应于a=a+b。

    -=:对于a-=b,即对应于a=a-b。

    *=:对于a*=b,即对应于a=a*b。

    /=:对于a/=b,即对应于a=a/b。

    %=:对于a%=b,即对应于a=a%b。

    &=:对于a&=b,即对应于a=a&b。

    |=:对于a|=b,即对应于a=a|b。

    ^=:对于a^=b,即对应于a=a^b。

    <<=:对于a<<=b,即对应于a=a<<b。

    >>=:对于a>>=b,即对应于a=a>>b。

    >>>=:对于a>>>=b,即对应于a=a>>>b。

     4. 位运算符

    &:按位与。当两位同时为1时才返回1。

    |:按位或。只要有一位为1就返回1。

    ~:按位非。单目运算符,将操作数的每一位(包括符号位)全部取反。

    ^:按位异或。当两位不同时返回1,相同时返回0。

    <<:左移运算符

    >>:右移运算符

    >>>:无符号右移运算符

     代码示例如下:

    System.out.println(5&9); //输出1

    System.out.println(5|9); //输出13

    System.out.println(~-5); //输出4

    System.out.println(5^9); //输出12

    System.out.println(5<<2); //输出20

    System.out.println(-5<<2); //输出-20

    System.out.println(-5>>2); //输出-2

    System.out.println(-5>>>2); //输出1073741822

    5. 比较运算符

    比较运算符用于判断两个常量或变量的大小,比较结果是是一个布尔值(true或false)。

    比较运算符有:>(大于),>=(大于等于),<(小于),<=(小于等于),==(等于)。

    代码示例如下:

    System.out.println(7>3); //输出true

    System.out.println(7<=3); //输出false

    6. 逻辑运算符

    逻辑运算符用于操作两个布尔的变量或常量,有如下6个:

    &&:与,两个操作数都为true才返回true,否则返回false。

    &:不短路与,作用与&&相同,但不会短路。

    ||:或,两个操作数只要有一个为true,就返回true,两个操作数都为false才返回false。

    |:不短路或,作用与||相同,但不会短路。

    !:非,或取反,如果操作数是true,则返回false。如果是false,则返回true。

    ^:异或,当两个操作数不同时才返回true,相同返回false。

    下面代码示范了逻辑运算符短路与不短路的区别(以|和||的区别为例):

    int a = 3;

    int b = 9;

    if(a>2 | b++ >9){

      System.out.println(b); //输出10,说明b++ >9得到了计算

    }

    if(a>2 || b++ >9){

      System.out.println(b); //输出9,说明b++ >9没有得到了计算

    }

    &与&&的区别与此类似。

    7. 三目运算符

     三目运算符:? :,语法格式如下:

    (expression) ? if-true-statement : if-false-statement

    三目运算符的语法规则是:先对逻辑表达式expression求值,如果expression返回true,则返回第二个操作数的值,否则返回第三个操作数的值。

    程序实例如下:

    String str = 7>4?"7大于4":"7不大于4";

    System.out.println(str); //输出7大于4

    8. 运算符的优先级

    运算符优先级(优先级上行优先于下行)
    运算符说明 Java运算符
    分隔符 . [] () {} , ;
    单目运算符 ++ -- ~ !
    强制类型转换运算符 (type)
    乘法、除法、求余 * / %
    加法、减法 + -
    移位运算符 <<  >>  >>>
    关系运算符 < <= > >=  instanceof
    等价运算符 ==   !=
    按位与 &
    按位异或 ^
    按位或 |
    条件与 &&
    条件或 ||
    三目运算符 ?:
    赋值 = += -= *= /= &= |= ^= %= <<= >>= >>>=

    欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!关注即送java全套资料一份

       ▼微信扫一扫下图↓↓↓二维码关注

     

  • 相关阅读:
    小程序登录页面
    小程序环境搭建
    js闭包
    作用域和作用域链及预解析
    高阶函数
    在.net core项目中,增加gulp打包任务
    阿里云部署docker-swarm 内网问题
    .net identity scaffold
    c#中对XML反序列化
    c# Reactive Extension中的FromEventPattern和FromEvent
  • 原文地址:https://www.cnblogs.com/bingyimeiling/p/11663824.html
Copyright © 2011-2022 走看看