其他运算符
阅读:5261.一元运算符
+=为二元运算符。相当把左侧的值加上右侧的值。
比如:int i = 1; i +=4; 此时i=5;等价于i = i + 4;
一般我们把运算符放在等号的左边,比如+=、*=、%=;
但是,如果左侧类型和右侧类型不同呢,就会把发生自动类型转换。
比如:int i = 6; i +=0.5; 相当于(int)(i + 0.5)。
2.自增自减运算符
++、—,自增或自减。
比如:int i =2; i++; i的值就是3;
自增或自减分为前缀和后缀。
比如:i++;后缀方式。
++i,前缀方式。
他们都是使变量加1或减1。但是在表达式中,区别是,前缀先加1,后缀先使用原来值,再加1。在实际的开发中,建议少用,会让人困惑。我们看一个例子:
public class TypeTest {
public static void main(String[] args){
int a = 2;
int b = 3;
System.out.println(10 * ++ a);
System.out.println(10 * b++);
}
}
结果都是30;第一个输出,会先让a加1为3,然后乘10,结果是30;第二个输出,b是3乘以10,结果为30。
3.关系运算符
- 检测相等性:==,比如5==6;结果为false;为不相等。
- 检测不相等:!=,比如5!=6;结果为true;因为它们确实不相等。
- 还有,大于>、小于<、大于等于>=、小于等于<=。
- 逻辑'与',表达式1 && 表达式2,它们有一个为false,结果就为false,都为true结果才为true;如果表达式为false,表达式2就不会再执行了,可以利用此来米面错误。
- 逻辑'或',表达式1 || 表达式2,有一个为true,则结果为true;同理,表达式1为true,表达式2就不会执行了。
- 三目运算符,条件 ? 表达式1 : 表达式2,这个是很有用的,如果条件成立,结果就执行表达式1,否则执行表达式2。比如 a > b ? a : b;则可以返回a和b中较大的一个值。
4.位运算符
计算整型类型时,可以直接对组成整型的数字各个位进行比较,包括:
与(&)、非(~)、或(|)、异或(^)。
与(&),两个操作数中位都为1,结果才为1。比如,int x = 129;int y = 128;x&y=128;
x=129,转为二进制10000001,y=128,转为二进制为10000000,相同的位置都为1,结果才为1,则结果为10000000,即为128。
非(~),如果位为0,结果是1,如果位为1,结果是0。
或(|),两个位只要有一个为1,那么结果就是1,否则就为0。
异或(^),两个操作数的位中,相同则结果为0,不同则结果为1。
5.移位运算符
可以对整型进行按照位移动。
运算符 | 含义 | 例子 |
---|---|---|
<< | 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) | x<<8 |
>> | "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. | x>>9 |
>>> | "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. | x>>>10 |
6.括号与运算符级别
同级别的运算符,自左往右计算。不同级别,按照级别从高往低计算。运算级别从高到低以此为:运算符按照优先级别的高低排序分别是:自加/减运算符、 算术运算符、比较运算符、逻辑运算符、赋值运算符。如下规律:
1.括号,如 ( ) 和 [ ]
2.一元运算符,如 -、++、- -和 !
3.算术运算符,如 *、/、%、+ 和 -
4.关系运算符,如 >、>=、<、<=、== 和 !=
5.逻辑运算符,如 &、^、|、&&、||
6.条件运算符和赋值运算符,如 ? :、=、*=、/=、+= 和 -=
比如:x && y || z,由于&&比||优先级高,所以相当于(x&&y)||z。
赞赏支持
