java 运算符
java提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组。
- 算数运算符
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
算数运算符
public class Test{
public static void main(String[] args) {
/*
* java算数运算符有7个:
* 1.+ 2.- 3.* 4./ 5.% 6.++ 7.--
* 分别为加法、减法、乘法、除法、取余、自增、自减
*/
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = "+(a+b));
System.out.println("a - b = " + (a - b) );
System.out.println("a * b = " + (a * b) );
System.out.println("b / a = " + (b / a) );
System.out.println("b % a = " + (b % a) );
System.out.println("c % a = " + (c % a) );
System.out.println("a++ = " + (a++) );
System.out.println("a-- = " + (a--) );
System.out.println("d++ = " + (d++) );
System.out.println("++d = " + (++d) );
}
}
前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算。
后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算
关系运算符
public class Test{
public static void main(String[] args) {
/*
* 关系运算符有6个
* 1.==(如果相等则条件为真) 2.!=(值不相等则条件为真)
* 3.> 4.< 5.>= 6.<=
*
*/
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
位运算符
操作符 | 描述 | 例子 |
---|---|---|
& | 与 | (A&B),得到12,即0000 1100 |
| | 或 | (A |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
~ | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
package test;
public class Test{
public static void main(String[] args) {
/*
* 位运算符有7个
* & | ^ ~ << >> >>>
*
*/
int a = 60; //60 = 0011 1100
int b = 13; //13 = 0000 1101
int c =0;
c = a&b;
System.out.println("a & b = "+ c);
c= a | b;
System.out.println("a | b ="+c);
c = a^b;
System.out.println("a ^ b = "+c);
c = ~a;
System.out.println("~ a = "+c);
c = a << 2;
System.out.println("a << 2 = " + c);
c = a>>2;
System.out.println("a >> 2 = " + c);
c = a >>>2;
System.out.println("a >>> 2 = "+ c);
}
}
/* 输出结果:
* a & b = 12
* a | b =61
* a ^ b = 49
* ~ a = -61
* a << 2 = 240
* a >> 2 = 15
* a >>> 2 = 15
* /
逻辑运算符
操作符 | 描述 | 例子 |
---|---|---|
&& | 逻辑与,两个操作数都为真,条件才为真。 | A && B |
|| | 逻辑或,两个操作数任何一个为真,条件为真 | A || B |
! | 逻辑非,反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
赋值运算符
=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=
三元运算符 (? :)
variable x = (expression) ? value if true : value if false
package test;
public class Test{
public static void main(String[] args) {
int a,b;
a = 10;
b = (a==1) ? 20:30;
System.out.println("Value of b is : "+ b);
b = (a == 10)? 20: 30;
System.out.println("Value of b is : "+b);
}
}
instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
( Object reference variable ) instanceof (class/interface type)
class Vehicle {}
public class Car extends Vehicle {
public static void main(String[] args){
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result);
}
}
java运算符优先级
从上至下优先级从高到低
() [] .
a++ a--
++a --a
*/%
+-
>> >>> <<
> >= < <=
== !=
&
^
|
&&
||
?:
= += -= *= /= %= >>= <<= &= ^= |=
,