当前位置:编程学习 > JAVA >>

java运算符优先级

java中运算顺序何时从左向右,何时从右向左,有没有比较权威的说明 --------------------编程问答-------------------- 都是从左往右吧.只不过有运算符优先级而已. --------------------编程问答-------------------- 从哪个方向先开始,取决于运算符的优先级 --------------------编程问答-------------------- Java 中共有 54 种运算符,按优先级可以分为 14 级,详见如下(原来整理的,供为参考):

优先级   操作符   含义        关联性  用法 
----------------------------------------------------------------
1        [ ]      数组下标      左    array_name[expr] 
         .        成员选择      左    object.member 
         ( )      方法参数      左    method_name(expr_list) 
         ( )      实例构造      左    class_name(expr_list) 
         ++       后缀自增      左    lvalue++ 
         --       后缀自减      左    lvalue-- 

2        ++       前缀自增      右    ++rvalue 
         --       前缀自减      右    --lvalue 
         ~        按位取反      右    ~expr 
         !        逻辑非        右    !expr 
         +        一元加        右    +expr 
         -        一元减        右    -expr 

3        ( )      强制转换      右    (type)expr 
         new      对象实例化    右    new type() 
                                      new type(expr_list) 
                                      new type[expr] 

4        *        乘            左    expr * expr 
         /        除            左    expr / expr 
         %        求余          左    expr % expr 

5        +        加            左    expr + expr 
         -        减            左    expr - expr 
         +        字符串连接    左    strExpr + strExpr 

6        >>       有符号右移    左    expr >> distance 
         >>>      无符号右移    左    expr >>> distance 

7        <        小于          左    expr < expr 
         <=       小于等于      左    expr <= expr 
         >        大于          左    expr > expr 
         >=       大于等于      左    expr >= expr 
      instanceof  类型比较      左    ref instanceof refType 
         ==       等于          左    expr == expr 
         !=       不等于        左    expr != expr 

8        &        整数按位与    左    integralExpr & integralExpr 
         &        布尔与        左    booleanExpr & booleanExpr 

9        ^        整数按位异或  左    integralExpr ^ integralExpr 
         ^        布尔异或      左    booleanExpr ^ booleanExpr 

10       |        整数按位或    左    integralExpr | integralExpr 
         |        布尔或        左    booleanExpr | booleanExpr 

11       &&       逻辑与        左    booleanExpr && booleanExpr 

12       ||       逻辑或        左    booleanExpr || booleanExpr 

13       ? :      条件运算      右    booleanExpr ? expr : expr 

14       =        赋值          右    lvalue = expr 
         *=       乘赋值        右    lvalue *= expr 
         /=       除赋值        右    lvalue /= expr 
         %=       模赋值        右    lvalue %= expr 
         +=       加赋值        右    lvalue += expr 
         +=    字符串连接赋值   右    lvalue += expr 
         -=       减赋值        右    lvalue -= expr 
         <<=      左移赋值      右    lvalue <<= expr 
         >>=   有符号右移赋值   右    lvalue >>= expr 
         >>>=  无符号右移赋值   右    lvalue >>>= expr 
         &=    整数按位与赋值   右    lvalue &= expr 
         &=       布尔与赋值    右    lvalue &= expr 
         |=    整数按位或赋值   右    lvalue |= expr 
         |=       布尔或赋值    右    lvalue |= expr 
         ^=   整数按位异或赋值  右    lvalue ^= expr 
         ^=     布尔异或赋值    右    lvalue ^= expr 



运算符不但有优先级,还有关联性。
上表中关联性为“左”表示该表达式从左边开始进行运算;关联性为“右”表示该表达式从右边开始进行运算。 --------------------编程问答-------------------- 做多了就知道了,不用一下子全记住,用到哪个记哪个就行 --------------------编程问答-------------------- 几个月不上论坛,火龙果大哥都4个星星了!恭喜恭喜 --------------------编程问答-------------------- 楼上说的对 --------------------编程问答--------------------
真的让他火龙哥说完了
引用 3 楼 bao110908 的回复:
Java 中共有 54 种运算符,按优先级可以分为 14 级,详见如下(原来整理的,供为参考):

Java code
优先级   操作符   含义        关联性  用法 
----------------------------------------------------------------
1        [ ]      数组下标      左    array_n……

--------------------编程问答-------------------- 想知道哪个的优先级高,可以简单写个小例子亚 --------------------编程问答--------------------
引用 5 楼 kamiomisuzu01 的回复:
几个月不上论坛,火龙果大哥都4个星星了!恭喜恭喜


不会吧,我有一年没升级了 --------------------编程问答-------------------- 权威说明是java语言规范。 --------------------编程问答--------------------
引用 3 楼 bao110908 的回复:
Java 中共有 54 种运算符,按优先级可以分为 14 级,详见如下(原来整理的,供为参考):

Java code
优先级   操作符   含义        关联性  用法 
----------------------------------------------------------------
1        [ ]      数组下标      左    array_……
 好全~~~~~~~~~~ --------------------编程问答-------------------- 先看优先级,如果优先级一致一般是从左往右 --------------------编程问答-------------------- 取决于运算符的优先级 --------------------编程问答-------------------- 好像火龙果大哥第7个错了,<, <=, >, >=, instanceof 与 ==, != 不是一个级别的 --------------------编程问答-------------------- 按优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op=  --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 这个应该算是最权威的了,java官方网站上的

<caption id="nutsandbolts-precedence"><strong>Operator Precedence</strong></caption>
<tr>
<th id="h1">Operators</th>
<th id="h2">Precedence</th>
</tr>
<tr>
<td headers="h1">postfix</td>
<td headers="h2"><code><em>expr</em>++ <em>expr</em>--</code></td>
</tr>
<tr>
<td headers="h1">unary</td>
<td headers="h2"><code>++<em>expr</em> --<em>expr</em> +<em>expr</em> -<em>expr</em> ~ !</code></td>
</tr>
<tr>
<td headers="h1">multiplicative</td>
<td headers="h2"><code>* / %</code></td>
</tr>
<tr>
<td headers="h1">additive</td>
<td headers="h2"><code>+ -</code></td>
</tr>
<tr>
<td headers="h1">shift</td>
<td headers="h2"><code><< >> >>></code></td>
</tr>
<tr>
<td headers="h1">relational</td>
<td headers="h2"><code>< > <= >= instanceof</code></td>
</tr>
<tr>
<td headers="h1">equality</td>
<td headers="h2"><code>== !=</code></td>
</tr>
<tr>
<td headers="h1">bitwise AND</td>
<td headers="h2"><code>&</code></td>
</tr>
<tr>
<td headers="h1">bitwise exclusive OR</td>
<td headers="h2"><code>^</code></td>
</tr>
<tr>
<td headers="h1">bitwise inclusive OR</td>
<td headers="h2"><code>|</code></td>
</tr>
<tr>
<td headers="h1">logical AND</td>
<td headers="h2"><code>&&</code></td>
</tr>
<tr>
<td headers="h1">logical OR</td>
<td headers="h2"><code>||</code></td>
</tr>
<tr>
<td headers="h1">ternary</td>
<td headers="h2"><code>? :</code></td>
</tr>
<tr>
<td headers="h1">assignment</td>
<td headers="h2"><code>= += -= *= /= %= &= ^= |= <<= >>= >>>=</code></td>
</tr>
</table>
--------------------编程问答-------------------- 貼错了。。看看这个官方这个文档吧
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html --------------------编程问答-------------------- 火龙果哥V5   优先级是基础知识!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,