1. 算数运算符
算数运算符: +、-、*、/、%、++前、后++、- -前、后- -
普通的加减乘除模运算
public void test(){
int i = 11;
int b = 3;
//加法运算: 11+3=14
System.out.println(i+b);
//减法运算: 11-3=8
System.out.println(i-b);
//乘法运算: 11*3=33
System.out.println(i*b);
//除法运算: 11/3=3 (四舍五入)
System.out.println(i/b);
//模运算: 11%3=2 (11/3=9...余2)
System.out.println(i%b);
}
前加加与后加加
public void test1(){
/*
做自增或自减的都为+1或-1
*/
int a = 11;
//前++ 当做完运算a=12
System.out.println(++a);
//后++ 当前a=11打印输出,直到下次调用a做自增运算的值+1
System.out.println(a++);
System.out.println(a);
}
2. 赋值运算符
赋值运算符: =、+=、-=、/=、*=、%=
- 运输结果不会改不本身的数据类型, 只会改变原有的值
public void test(){
//将12的值赋值给a,这就是'='赋值运算符的作用
int a = 12;
int b = 23;
System.out.println(a+b);//35
//a+=b 相当于a=a+b
a+=b;
//将 a+b 后的值赋值给 a
System.out.println(a);//35
//a现在是35,后面用a作运算都为35
System.out.println(a-b);//12
//a-=b 相当于a=a-b
a-=b;
//将 a+b 后的值赋值给 a
System.out.println(a);//12
//后面乘法除法与取模也是这么运算
}
3. 比较运算符
比较运算符: ==、!=、>、<、>=、<=、instanceof
- 通常我们对于比较运算符的应用都是使用在流程控制环节的条件表达式之中,不会直接进行比较输出
public void test(){
//通常我们用左边的值比较右边的值是否符合运算符要求,如符合返回true、不符合返回false
int a = 10;
int b = 20;
// '==' 判断两个值是否相等
// 在比较时通常编译器就能够联系上下文判断出是true还是false,我们可以根据需求修改
//如果比较是动态的变量那么不会进行判断
System.out.println(a==b);//false
System.out.println(a!=b);//true
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a>=b);//false
System.out.println(a<=b);//true
//instanceof是我们在多态经常用到比较子父类关系的关键字
String str = new String("abc");
System.out.println(str instanceof Object);
}
4. 逻辑运算符
逻辑运算符: &、&&、|、||、!、^
逻辑运算符的运算都为boolean类型的变量,而且结果都为boolean类型
&与&&符号的区别:
- &: 逻辑与,如果在条件判断中在&左边的为false,也会继续执行右边的运算
- &&: 短路与,如果在条件判断中在&&符号左边的运算为false,不会对&&符号右边进行运算
- &与&&符号的相同点: 当在符号两边的运算都为true才会执行表达式
|与||符号的区别:
- | : 逻辑或,如果在条件判断中在|左边的为false,也会继续执行右边的运算
- || : 短路或,如果在条件判断中在||符号左边的运算为true时,不会对||符号右边进行运算
- 当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
!非运算符:
- 在 !(条件表达式) 当条件表达式为true时,返回false
- 在 !(条件表达式) 当条件表达式为false时,返回true
//逻辑与 &
public void test(){
boolean b1 = false;
int num = 0;
//& 逻辑与,如果在条件判断中在&左边的为false,也会继续执行右边的运算
if (b1 & (num++ == 0)) {
System.out.println("北京");
}else{
System.out.println("南京");
}
System.out.println("num="+num);//1
}
//短路与 &&
public void test1(){
boolean b1 = false;
int num = 0;
//& 短路与,如果在条件判断中在&&符号左边的运算为false,不会对&$符号右边进行运算
if (b1 && (num++ == 0)) {
System.out.println("北京");
}else{
System.out.println("南京");
}
System.out.println("num="+num);//0
}
//逻辑或 |
public void test2() {
boolean b1 = false;
int num = 0;
// |: 逻辑或,如果在条件判断中在|左边的为false,也会继续执行右边的运算
if (b1 | (num++ == 0)) {
System.out.println("北京");
}else{
System.out.println("南京");
}
System.out.println("num="+num);//0
}
//短路或 ||
public void test3() {
boolean b1 = false;
int num = 0;
// || : 短路或,如果在条件判断中在||符号左边的运算为true时,不会对||符号右边进行运算
if (b1 || (num++ == 0)) {
System.out.println("北京");
}else{
System.out.println("南京");
}
System.out.println("num="+num);//0
}
5. 位运算符
位运算符:<< 、>>、>>>、&、|、^、~
-
<<(向右位移,位移1位也就是乘以2)、>>(向左位移,位移1位也就是除以2)
-
仅需了解: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)、>>>(无符号右移运算符)
public void test(){
int i = 21;
i = -21;
System.out.println("i << 2 :" + (i << 2));
System.out.println("i << 3 :" + (i << 3));
System.out.println("i << 27 :" + (i << 27));
int m = 12;
int n = 5;
System.out.println("m & n :" + (m & n));
System.out.println("m | n :" + (m | n));
System.out.println("m ^ n :" + (m ^ n));
}
6. 三元运算符
语法: (条件表达式)? 表达式1 : 表达式2
条件表达式里如果为true则返回表达式1,为false返回表达式2
public void test(){
int a = 21;
int b = 20;
//如果a大于b则返回b,否则返回a
int c = a > b ? b : a;
System.out.println(c);
}
- 凡是可以使用三元运算符的地方都可以改写为if…else
- 反之则不可以
- 如果程序既可以使用三元运算符又可以使用if…else结构,优先使用三元运算符, 原因: 高效、简洁、执行效率高