java运算符优先级 java中运算顺序何时从左向右,何时从右向左,有没有比较权威的说明 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 运算符不但有优先级,还有关联性。上表中关联性为“左”表示该表达式从左边开始进行运算;关联性为“右”表示该表达式从右边开始进行运算。 好像火龙果大哥第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 eclipse 打不开 请各位看看 谢谢 return 语句应该返回什么,这个函数结果该怎么表示 紧急求助! 关于jd-gui 和jad.exe反编出来的src差异巨大的问题! charAt()方法的问题?? 抛出这么一个异常该怎么解决,速给分! 关于弹出窗口的问题,恳请大家帮助 JInternalFrame 重影 JAVA中的Textarea如何使光标跳到指定行??? 有人弄P2P吗?请进来 JavaSE主要引用领域 求教如何解决滚动条到底重复触发的问题 如何打印双色球所有的注数
----------------------------------------------------------------
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
运算符不但有优先级,还有关联性。
上表中关联性为“左”表示该表达式从左边开始进行运算;关联性为“右”表示该表达式从右边开始进行运算。
<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