1、Java 运算符
运算符用于对变量和值执行操作。
在下面的示例中,我们使用
+
运算符可将两个值加在一起:
例如:
int x = 100 + 50;
尽管+
运算符通常用于将两个值加在一起,例如,在上面的示例中,但是它也可以用于将变量和值或变量和另一个变量加在一起:
例如:
int sum1 = 100 + 50; // 150 (100 + 50)
int sum2 = sum1 + 250; // 400 (150 + 250)
int sum3 = sum2 + sum2; // 800 (400 + 400)
Java将运算符分为以下几组:
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 按位运算符
2、算术运算符
算术运算符用于执行常见的数学运算。算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | a + b 等于 30 |
- | 减法 - 左操作数减去右操作数 | a – b 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | a * b等于200 |
/ | 除法 - 左操作数除以右操作数 | b / a等于2 |
% | 取余 - 左操作数除以右操作数的余数 | b % a等于0 |
++ | 自增: 操作数的值增加1 | b++ 或 ++b 等于 21 |
-- | 自减: 操作数的值减少1 | b-- 或 --b 等于 19 |
例如,
public class main {
public static void main(String[] args) {
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--) );
// d++和++d的区别
System.out.println("d++ = " + (d++) );
System.out.println("++d = " + (++d) );
}
}
注意:前缀自增自减法(++d,--d)是 先进行自增或者自减运算,再进行表达式运算。后缀自增自减法(a++,a--)是先进行表达式运算,再进行自增或者自减运算。
3、Java 赋值操作符
赋值运算符用于为变量赋值。
例如:在下面的示例中,我们使赋值运算符(=
)将值10分配给名为x:
int x = 10;
附加分配运算符(+ =
)为变量添加值:
例如:
int x = 10;
x += 5;
所有赋值运算符的列表:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符, 将右操作数的值赋给左侧操作数 | c = a + b将把a + b得到的值赋给c |
+= | 加和赋值操作符, 它把左操作数和右操作数相加赋值给左操作数 | c += a 等价于c = c + a |
-= | 减和赋值操作符, 它把左操作数和右操作数相减赋值给左操作数 | c -= a 等价于c = c - a |
*= | 乘和赋值操作符, 它把左操作数和右操作数相乘赋值给左操作数 | c *= a 等价于c = c * a |
/= | 除和赋值操作符, 它把左操作数和右操作数相除赋值给左操作数 | c /= a ,c 与 a 同类型时等价于 c = c / a |
(%) = | 取模和赋值操作符, 它把左操作数和右操作数取模后赋值给左操作数 | c %= a 等价于c = c%a |
<<= | 左移位赋值运算符 | c <<= 2等价于c = c << 2 |
>>= | 右移位赋值运算符 | c >>= 2等价于c = c >> 2 |
&= | 按位与赋值运算符 | c &= 2等价于c = c&2 |
^= | 按位异或赋值操作符 | c ^= 2等价于c = c ^ 2 |
|= | 按位或赋值操作符 | c |= 2等价于c = c | 2 |
例如,
public class main {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 0;
c = a + b;
System.out.println("c = a + b = " + c );
c += a ;
System.out.println("c += a = " + c );
c -= a ;
System.out.println("c -= a = " + c );
c *= a ;
System.out.println("c *= a = " + c );
a = 10;
c = 15;
c /= a ;
System.out.println("c /= a = " + c );
a = 10;
c = 15;
c %= a ;
System.out.println("c %= a = " + c );
c <<= 2 ;
System.out.println("c <<= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= 2 = " + c );
c &= a ;
System.out.println("c &= a = " + c );
c ^= a ;
System.out.println("c ^= a = " + c );
c |= a ;
System.out.println("c |= a = " + c );
}
}
4、Java 关系运算符
关系运算符用于比较两个值:
操作符 | 描述 | 例子 |
== | 判断如果两个操作数的值是否相等, 如果相等则条件为真。 | x == y |
!= | 判断如果两个操作数的值是否相等, 如果值不相等则条件为真。 | x!= y |
> | 判断左操作数的值是否大于右操作数的值, 如果是那么条件为真。 | x> y |
< | 判断左操作数的值是否小于右操作数的值, 如果是那么条件为真。 | x |
>= | 判断左操作数的值是否大于或等于右操作数的值, 如果是那么条件为真。 | x> = y |
<= | 判断左操作数的值是否小于或等于右操作数的值, 如果是那么条件为真。 | x <= y |
例如,
public class main {
public static void main(String[] args) {
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) );
}
}
5、Java 逻辑运算符
逻辑运算符用于确定变量或值之间的逻辑:
Operator | Name | Description | 例子 |
&& | 逻辑与 | 如果两个语句都为true,则返回true | x <5 && x <10 |
|| | 逻辑或 | 如果其中一个语句为true,则返回true | x <5 || x <4 |
! | 逻辑非 | 反转结果,如果结果为true,则返回false | !(x <5 && x <10) |
例如,
public class main {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
}
}
短路逻辑运算符
当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
public class main {
public static void main(String[] args){
int a = 4;//定义一个变量;
boolean b = (a<3)&&(a++<10);
System.out.println("b = "+b);
System.out.println("a = "+a);
}
}
6、Java 位运算符
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。例如,a = 30,b = 19;它们的二进制格式表示将如下:
a = 0011 0000 b = 0001 1001 ----------------- a&b = 0001 0000 a | b = 0011 1001 a ^ b = 0010 1001 ~a= 1100 1111
操作符 | 描述 | 例子 |
---|---|---|
& | 按位与运算符,如果相对应位都是1,则结果为1,否则为0 | (a&b) |
| | 按位或运算符,如果相对应位都是 0,则结果为 0,否则为 1 | (a | b) |
^ | 异或运算符,如果相对应位值相同,则结果为0,否则为1 | (a ^ b) |
〜 | 取反运算符,按位取反运算符翻转操作数的每一位, 即0变成1,1变成0。 | (〜a) |
<< | 按位左移运算符,左操作数按位左移右操作数指定的位数。 | a << 2 |
>> | 按位右移运算符,左操作数按位右移右操作数指定的位数。 | a >> 2 |
>>> | 按位右移补零操作符, 左操作数的值按右操作数指定的位数右移, 移动得到的空位以零填充。 | a >>>2 |
例如,
public class main {
public static void main(String[] args) {
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
}
}