2.4运算符
表达式:操作数与运算符组成;操作数可以是常量、变量或方法。
2.4.1数学运算符
范例
public class threefour {
public static void main(String[] args) {
int num=10;
int num2=5;
int a= num+num2;
int b= num-num2;
int c= num*num2;
int d= num/num2;
//模运算
int e= num%num2;
//简化赋值运算符
num*=2;
System.out.println(num);
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
执行结果
20
15
5
50
2
0
自增自减:
++ | 自增,变量值加1,放在变量前表示先自增后运算,放在变量后表示先计算后自增 |
---|---|
— | 自减,变量值减1,放在变量前表示先自减后运算,放在变量后表示先计算后自减 |
范例:实现自增与自减操作
public class threefive {
public static void main(String[] args) {
int x=20;
int y=30;
//先自增1,在赋值x为21 使用的也是21
//先赋值,在自减1 使用的是30,最终Y 的结果是29
int result=++x-y--;
System.out.println(result);
System.out.println(x);
System.out.println(y);
}
}
执行结果
-9
21
29
2.4.2关系运算符
关系运算的主要特征就是进行大小的比较处理,包括<,>,<=,>=,!=,==。所有的关系运算返回的判断结果都是布尔类型数据
范例:关系判断
public class threesix {
public static void main(String[] args) {
int x=6;
int y=8;
boolean flag=x>y;
System.out.println(flag);
int z=20;
double f=20.0;
boolean flag2=z==f;
System.out.println(flag2);
char c='李';
int d=26446;
boolean flag3=c==d;
System.out.println(flag3);
}
}
执行结果
false
true
true
2.4.3三目运算符
数据类型 变量 = 关系运算?关系满足时的内容:关系不满足时的内容
范例:使用三目赋值
public class threeseven {
public static void main(String[] args) {
//数据类型 变量=关系运算?关系满足时的内容:关系不满足时的内容
int x=10;
int y=20;
int max=x>y?x:y;
System.out.println(max);
}
}
执行结果
20
范例:三目运算符简化if逻辑判断
public class threeseven2 {
public static void main(String[] args) {
int x=10;
int y=15;
int max=0;
if(x>y) {
max=x;
}else if(y>x) {
max=y;
}
System.out.println(max);
}
}
执行结果
15
2.4.4逻辑运算符
逻辑运算符 | 描述 |
---|---|
& | AND,普通与 |
&& | 短路与 |
丨 | OR,普通或 |
– | – |
丨丨 | 短路或 |
! | 取反,true变false变true |
与或真值表
&/&&同为true为true,只要有一个false则返回false
|/||同为false为false,只要有一个true则返回true
范例:
public class threeeight {
public static void main(String[] args) {
// !
boolean flag=!(1>2);
System.out.println(flag);
int a=1;
int b=1;
//&&
System.out.println(a==b&&2>a);
//||
System.out.println(a==b||a>3);
}
}
执行结果
true
true
true
范例:&和&&区别
public class threenine {
public static void main(String[] args) {
//普通与& 判断条件全部执行
//条件1:1>2,返回false
//条件2:10/0==0 执行时会出现异常导致程序中断
System.out.println(1>2&10/0==0);
}
}
执行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.lxh.twochapter.threenine.main(threenine.java:8)
public class threenine {
public static void main(String[] args) {
//短路与 前面出现false 则程序中止
System.out.println(1>2&&10/0==0);
}
}
执行结果
false
|和||区别
public class threenine {
public static void main(String[] args) {
//普通或| 判断条件全部执行
System.out.println(1!=2|10/0==0);
}
}
执行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.lxh.twochapter.threenine.main(threenine.java:12)
public class threenine {
public static void main(String[] args) {
//短路与 前面的判断条件出现true 则中止 输出true vbfd
System.out.println(1!=2||10/0==0);
}
}
执行结果
true
2.4.5位运算符
位运算符
逻辑运算符 | 描述 |
---|---|
& | 按位与 |
丨 | 按位或 |
^ | 异或(相同为0,不同为1) |
<< | 左位移 |
>> | 右位移 |
>>> | 无符号右位移 |
位运算结果
1、与操作
0&0 | 0 |
---|---|
0&1 | 0 |
1&0 | 0 |
1&1 | 1 |
2、或操作
0丨0 | 0 |
---|---|
0丨1 | 1 |
1丨0 | 1 |
1丨1 | 1 |
3、异或操作
0^0 | 0 |
---|---|
0^1 | 1 |
1^0 | 1 |
1^1 | 0 |
范例:
public class fourtwo {
public static void main(String[] args) {
int x=13;
int y=7;
//实现位与计算
System.out.println(x&y);
//实现位或计算
System.out.println(x|y);
//位移操作
int a=8;
int b=a>>3;//1
int c=a<<4;//128
System.out.println(b);
System.out.println(c);
}
}
执行结果
5
15
1
128
计算分析:
13的二进制:00000000 00000000 00000000 00001101
7的二进制:00000000 00000000 00000000 00000111
&结果: 00000000 00000000 00000000 00000101 转换为十进制:5
|结果: 00000000 00000000 00000000 00001111 转换为十进制:15
移位操作 :箭头指向方向。左乘右除。乘或者除 2^移位大小