算术运算符
- Java的算术运算符与C++中一样:+、-、*、/、%、++、- -
- / 运算符的运算结果与两侧操作数的数据类型有关
public class test{
public static void main(String args[]){
int a = 15, b = 4;
float c = 15, d = 4;
System.out.println(a / b); // 3
System.out.println(c / d); // 3.75
}
}
- ++、- -运算符前缀形式、后缀形式的运算结果不同
- 前缀形式:先对操作数自增或自减,再进行表达式运算
- 后缀形式:先进行表达式运算,再对操作数自增或自减
public class test{
public static void main(String args[]){
int a = 1, b = 2;
System.out.println(++a); // 2
System.out.println(a); // 2
System.out.println(a++); // 2
System.out.println(a); // 3
System.out.println(--b); // 1
System.out.println(b); // 1
System.out.println(b--); // 1
System.out.println(b); // 0
}
}
位运算符
位运算符先将操作数转换为二进制,再运算
位运算符 | 名称 | 说明 |
---|---|---|
& | 与 | 如果相对应位都是1,则结果为1,否则为0 |
| | 或 | 如果相对应位都是0,则结果为0,否则为1 |
^ | 异或 | 如果相对应位值相同,则结果为0,否则为1 |
~ | 补 | 翻转每一位,1变为0,0变为1 |
<< | 左移 | 左操作数左移右操作数指定的位数 |
>> | 右移 | 左操作数右移右操作数指定的位数,越界舍弃 |
>>> | 右移补零 | 同右移,但移动产生的空位用0填充 |
public class test{
public static void main(String args[]){
int a = 15, b = 10;
// a: 1111
// b: 1010
System.out.println(a & b); // 1010 -> 10
System.out.println(a | b); // 1111 -> 15
System.out.println(a ^ b); // 0101 -> 5
System.out.println(~a); // -a-1 -> -16
System.out.println(a << 2); // 111100 -> 60
System.out.println(a >> 2); // 11 -> 3
System.out.println(a >>> 2); // 0011 -> 3
}
}
逻辑运算符
逻辑运算符 | 名称 | 说明 |
---|---|---|
&& | 与 | 同真为真,否则为假 |
|| | 或 | 同假为假,否则为真 |
! | 非 | 真变假,假变真 |
^ | 异或 | 相同为假,不同为真 |
赋值运算符
赋值运算符 | 说明 |
---|---|
= | a = 1 |
+= | a += 1 即 a = a + 1 |
-= | a -= 1 即 a = a - 1 |
*= | a = 2 即 a = a 2 |
/= | a /= 2 即 a = a / 2 |
位运算符和逻辑运算符也同理
关系运算符
- 关系运算符的结果为boolean型
- 关系运算符有 == 、!= 、< 、> 、<= 、>= ,这里就不细说了
条件运算符
语法形式:布尔表达式 ? 表达式1 : 表达式2
如果布尔表达式为真,即布尔表达式的值为true,则结果返回表达式1的值,否则返回表达式2的值
public class test{
public static void main(String args[]){
int score = 92;
String str = (score >= 60) ? "及格" : "不及格";
System.out.println(str); // 及格
}
}