右值可以是任意的常量、变量或表达式(只要可以生成一个值)。
左值必须是一个明确的、已命名的变量。
以下两种写法是等价的:
自减操作符是--。
例:++a 等价于 a = a+1;
自增和自减操作都可以分为前缀式和后缀式。
以自增为例,
Output:
由此可见,前缀式是先递增,然后再代入表达式;而后缀式是先代入表达式,再对自身进行递增运算。
关系操作符生成的是一个 boolean 结果,它们计算的是操作数的值之间的关系。
如果关系是真的,关系表达式的结果为 true;反之,结果为 false。
关系操作符包括小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。
逻辑操作符包括与(&&)、或(||)、非(!),它们根据参数的逻辑关系,生成一个boolean值。
括号操作符(),可以提高括号中表达式的执行优先级。
Output:
按位与(&)、按位或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)、无符号右移(>>>)
三元操作符比较特殊,它有三个操作数。它的格式为:
(布尔表达式)? 值A : 值B
如果布尔表达式的值为true,则结果为值A;反之,结果为值B。
注:Java中只有一个三元操作符。
(10)直接常量
一般说来,程序中使用了”直接常量“,编译器可以准确地知道要生成什么样的类型,但有时候却是模棱两可的。
直接常量后面的后缀字符可以标志它的类型。
若为大写(或小写)的 L ,表示 long 型。
十六进制数适用于所有整数数据类型,以前缀为 0x(或0X),后面跟随0~9或大小写的a~f。
八进制数由前缀0以及后续的0~7的数字来表示。
当多个运算符出现在同一个表达式中,会存在一个问题:谁先谁后呢?
这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。
再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。
类别
|
操作符
|
关联性
|
后缀
|
() [] . (点操作符)
|
左到右
|
一元
|
+ + - !〜
|
从右到左
|
乘性
|
* /%
|
左到右
|
加性
|
+ -
|
左到右
|
移位
|
>> >>> <<
|
左到右
|
关系
|
>> = << =
|
左到右
|
相等
|
== !=
|
左到右
|
按位与
|
&
|
左到右
|
按位异或
|
^
|
左到右
|
按位或
|
|
|
左到右
|
逻辑与
|
&&
|
左到右
|
逻辑或
|
| |
|
左到右
|
条件
|
?:
|
从右到左
|
赋值
|
= + = - = * = / =%= >> = << =&= ^ = | =
|
从右到左
|
逗号
|
,
|
左到右
|
所谓表达式,是指由常量、变量或是操作数与运算符所组合而成的语句。
例
如下是一个简单的算术表达式语句
Java编程思想
http://www.w3cschool.cc/java/java-operators.html