1.算数运算符
运算符 | 运算 | 举例 | 结果 |
---|---|---|---|
+ | 正号 | a=+2 | a=2 |
- | 负号 | a=5,b=-a | b=-5 |
+ | 加 | 2+4 | 6 |
- | 减 | 10-5 | 5 |
* | 乘 | 2*3 | 6 |
/ | 除 | 9/3 | 3 |
% | 取余(取模,结果的符号与被模数的符号相同) | 7%5 | 2 |
前++ | 先自增1,后运算 | a=2;b=++a | a=3;b=3 |
后++ | 先运算,后自增1 | a=2;b=a++ | a=3;b=2 |
前- - | 先自减1,后运算 | a=2;b=- -a | a=1;b=1 |
后- - | 先运算,后自减1 | a=2;b=a- - | a=1;b=2 |
+ | 连接符(只能在String与其他数据类型变量之间使用) | “He”+”llo” | “Hello” |
代码示例:
public class AriTest {
public static void main(String[] args) {
int s1 = 12;
int i1 = 5;
int result1 = s1 / i1;
double result2 = s1 / i1;
double result3 = s1 / (i1 + 0.0);
double result4 = (double) s1 / i1;
double result5 = (double) (s1 / i1);
System.out.println(result1);//2
System.out.println(result2);//2.0
System.out.println(result3);//2.4
System.out.println(result4);//2.4
System.out.println(result5);//2.0
// *******************************
int m1 = 14;
int n1 = 8;
System.out.println("m1 % n1 = " + m1 % n1);//m1 % n1 = 6
int m2 = -14;
int n2 = 8;
System.out.println("m2 % n2 = " + m2 % n2);//m2 % n2 = -6
int m3 = 14;
int n3 = -8;
System.out.println("m3 % n3 = " + m3 % n3);//m3 % n3 = 6
int m4 = -14;
int n4 = -8;
System.out.println("m4 % n4 = " + m4 % n4);//m4 % n4 = -6
// *********************************
int b1 = 6;
int b2 = 7;
int d1 = ++b1;
int d2 = b2++;
System.out.println("b1=" + b1 + ",d1=" + d1);//b1=7,d1=7
System.out.println("b2=" + b2 + ",d2=" + d2);//b2=8,d2=7
}
}
2.赋值运算符
运算符 | 运算 | 举例 | 结果 |
---|---|---|---|
= | 赋值 | a=3,b=a | a=3,b=3 |
+= | 加等于 | a=2,b=5,b+=a | a=2,b=7 |
-= | 减等于 | a=2,b=6,b-=a | a=2,b=4 |
*= | 乘等于 | a=3,b=2,b*=a | a=3,b=6 |
/= | 除等于 | a=3,b=9,b/=a | a=3,b=3 |
%= | 取模等于 | a=2,b=3,b%=a | a=2,b=1 |
代码示例:
public class SetValueTest {
public static void main(String[] args) {
int num1 = 10;
num1 += 2;// num1 = num1 + 2;
System.out.println("num1=" + num1);//num1 = 12
int num2 = 12;
num2 %= 5;// num2 = num2 % 5;
System.out.println("num2=" + num2);//num2 = 2
}
}
3.比较运算符
运算符 | 运算 | 举例 | 结果 |
---|---|---|---|
== | 相等于 | 2==5 | false |
!= | 不等于 | 2!=5 | true |
> | 大于 | 2>5 | false |
< | 小于 | 2<5 | true |
>= | 大于等于 | 2>=5 | false |
<= | 小于等于 | 2<=5 | true |
instanceof | 检查是否是类的对象 | “Hello” instanceof String | true |
说明:
(1)比较运算符的结果均为Boolean型(true或false)
(2)> < >= <= :只能使用在数值类型的数据之间。
(3)“==”与“=”为用法不同的两种运算
代码示例:
public class CompareTest {
public static void main(String[] args) {
int i = 10;
int j = 20;
System.out.println(j == i);//false,j与i不相等
System.out.println(j = i);//10,将i的值赋给了j
boolean m = true;
boolean n = false;
System.out.println(m == n);//false
System.out.println(m = n);//false
}
}
4.逻辑运算符
运算符 | 运算 |
---|---|
单& | 逻辑与 (有一个为false,结果为false) |
双& | 短路与 |
单| | 逻辑或(有一个为true,结果为true) |
双| | 短路或 |
! | 逻辑非 |
^ | 逻辑异或 |
说明:
(1)逻辑运算符操作的都是boolean类型的变量。而且结果也是boolean类型。
(2)& 与 && 运算结果一样。当符号左边是true时,二者都会执行符号右边的运算;当符号左边是false时,&继续执行符号右边的运算,&&不再执行符号右边的运算。
(3)| 与 | | 运算结果一样。当符号左边是false时,二者都会执行符号右边的运算;当符号左边是true时,| 继续执行符号右边的运算,而 | | 不再执行符号右边的运算。
代码示例:
public class LogicTest {
public static void main(String[] args) {
boolean a1 = true;
a1 = false;
int b1 = 11;
if (a1 & b1++ > 10) {
System.out.println("Hello Java!");
} else {
System.out.println("Hello World!");//Hello World!
}
System.out.println("b1=" + b1);//b1=12
boolean a2 = true;
a1 = false;
int b2 = 11;
if (a2 && b2++ > 10) {
System.out.println("Hello Java!");//Hello Java!
} else {
System.out.println("Hello World!");
}
System.out.println("b2=" + b2);//b2=12
boolean a3 = false;
a3 = true;
int b3 = 11;
if (a3 | (b3++ > 10)) {
System.out.println("Hello Java!");//Hello Java!
} else {
System.out.println("Hello World!");
}
System.out.println("b3=" + b3);//b3=12
boolean a4 = false;
a4 = true;
int b4 = 11;
if (a4 || (b4++ > 10)) {
System.out.println("Hello Java!");//Hello Java!
} else {
System.out.println("Hello World!");
}
System.out.println("b4=" + b4);//b4=11
}
}
5.位运算符
- 位运算是直接对整数的二进制进行的运算
(1)<<:左移,被移除的高位丢弃,空缺位补0。
(2)>>:右移,被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
(3)>>>:无符号右移(没有无符号左移),被移位二进制最高位无论是0或者是1,空缺位都补0。
(4)&:与运算,二进制位进行&运算,只有1&1时结果是1,否则是0。
(5)|:或运算,二进制位进行 | 运算,只有0 | 0时结果是0,否则是1。
(6)^:异或运算,相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1。
(7)~:取反运算,正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反。
代码示例:
public class BitTest {
public static void main(String[] args) {
int i = 13;
System.out.println("i << 2 :" + (i << 2));//i << 2 :52
System.out.println("i << 27 :" + (i << 27));//i << 27 :1744830464
System.out.println("i << 28 :" + (i << 28));//i << 28 :-805306368
System.out.println("i >> 2 :" + (i >> 2));//i >> 2 :3
int m = 8;
int n = 2;
System.out.println("m & n :" + (m & n));//m & n :0
System.out.println("m | n :" + (m | n));//m | n :10
System.out.println("m ^ n :" + (m ^ n));//m ^ n :10
}
}
6.三元运算符
(1)格式:(条件表达式)? 表达式1 : 表达式2
①当条件表达式为true时,执行表达式1;
②当条件表达式为false时,执行表达式2。
(2)说明:
① 条件表达式的结果为boolean类型。
②表达式1 和表达式2要求是一致的。
③三元运算符可以嵌套使用。
④当可以使用三元运算符的地方,同样也可以改写成If-else型。反之,则不成立。当二者均可使用的时候,优先选择 三元运算符。
代码示例:
public class SanYuanTest {
public static void main(String[] args) {
int m = 25;
int n = 12;
int max = (m > n) ? m : n;
System.out.println("max = " + max);//max = 25
double i = 1.4;
double j = 2.1;
double h = 0.7;
double max1 = (i > j) ? i : j;
double max2 = (max1 > h) ? max1 : h;
System.out.println("三个数中最大值为 :" + max2);//三个数中最大值为 :2.1
}
}