- Java运算符详解
- 算数操作符
- %
- %可以对小数进行运算
- %对负数的运算
- 复合运算符`+=,-=,=,%=`
- 复合运算已经强制转换了
- 自增自减运算符++,--
- 关系运算符
- 逻辑操作符
- 遵循短路求值
- &和|运算符
- 位操作符
- &
- |
- !
- ^
- 移位操作符
- <<
- >>
- >>>
- 条件运算符
- 运算符的优先级
System.out.println(15.5%3);//答案是0.5%对负数的运算
public static void main(String[] args){
System.out.println(-10%3);//-1
System.out.println(-10%-3);//-1
System.out.println(10%-3);//1
复合运算符+=,-=,=,%=
复合运算已经强制转换了
像这种正常的加法,short和int进行相加,结果是int类型。但是int赋予short就会出错。
public static void main(String[] args) {
short a=10;
a=a+9;//编译出错
}
但是使用复合运算符,上面的运算就可以通过。
public static void main(String[] args) {
short a=10;
a+=9;
}
原因是上面的复合运算符已经强制类型转换过了。
自增自减运算符++,–- 如果只是对某个变量进行使用,不赋予其他的变量,前自增和后自增就没有任何的区别。
- 如果将自增或自减的值赋予某个变量,前自增是自身加1后赋予那个变量,,后自增是原来的数赋予那个变量后,自身再加一。
关系运算符就是一系列的表达式用于判断是否为真还是为假的一个表达式,结果是boolean类型的true或者是false。
常见的一些关系运算符。
int a = 10; int b = 20; System.out.println(a == b); System.out.println(a != b); System.out.println(a < b); System.out.println(a > b); System.out.println(a <= b); System.out.println(a >= b);
但是,在Java中不能以结果为0或非0来当作关系表达式,其结果必需为true或false,不能用数字来表示。
这样就是错误的。
逻辑操作符&& || !是常用的逻辑操作符,它的操作数和结果都是boolean类型的数
遵循短路求值逻辑操作符支持短路求值的方法。
public static void main(String[] args) {
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
}
对于&&来说,如果第一个逻辑表达式就是假的,那就遵循最短路求值原则,第二个逻辑表达式就不再需要求了。所以10/0也不会报错。
对于||来说, 如果第一个逻辑表示式就是真的,那就遵循最短路求值原则,第二个逻辑表达式就不会被编译,所以出现了10/0也不会报错
&和|运算符当操作数是逻辑表达式的时候,&和|也表示逻辑运算,但是不能保证短路求值。
public static void main(String[] args) {
System.out.println(10 > 20 & 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 | 10 / 0 == 0); // 打印 false
}
位操作符
对数值以二进制进行操作的操作符叫做位操作符
&如果每个二进制都是1,结果就是1,否则为0
|如果每个二进制都是0,结果就是0,否则为1
!如果该二进制位是1,结果就是0;如果二进制结果是0,结果就是1
^相同为0,不同为1
移位操作符移位操作符有三个,>> << >>>
<<最左侧丢弃,最右侧补0
>>最后移位丢弃,如果是正数最左侧补0,如果是负数最左侧补1
>>>最后一位丢弃,最左侧按照无符号数,补0.
注意:
1.向左移动1次就是扩大2倍,向左移动N次就是扩大2^N次
2.向右移动2次就是缩小2倍,向右移动N次就是缩小2^N次
条件运算符也叫做三目运算符。
表达式1 ? 表达式2 :表达式3
表达式1是布尔类型
如果表达式1是true,就返回表达式2.如果表达式1是false,就返回表达式3
public static void main(String[] args) {
int a=10;
int b=20;
int max=(a>b)?a:b;
System.out.println(max);
}
条件表达式可以使代码更为整洁。
运算符的优先级各各运算符在计算的时候都有优先级,在写程序的时候要注意这一点,要习惯加括号
遇到特别的运算顺序的时候要回来标记。



