Java运算符大全
刚入坑的小伙伴们?对运算符有所了解吗?运算符可谓是入门必备知识。对你以后的长远发展有着很深的影响。孔子曰:“工欲善其事,必先利其器。运算符一次性给你讲清楚,以备不时之需。
运算符的分类
运算符一共分为六种、三类
六种:算数、赋值、关系、逻辑、条件、位 运算符
三类:单目、双目、三目
1. 算数运算符
算数运算符:+ - * / % ++ –
% 模以|取模|求余数
1、如果第一个操作数比第二个操作数小,结果就为第一个操作数
例:5%6=5、7%100=7
2、取余的左边为负数,取余的结果为负
例:7%3=1、-7%3=-1、7%-3=1
++ - -
1、不参与其他任何运算(赋值运算也算)
++(–)放在操作数前面或者后面,都是自身+(-)1
例:int a = 5; a++; int b = 5; ++b
结果 a=6;b=6
2、参与其他运算
++(–) 放在操作数的前面,先自身+1(-1),再去参与运算
++(–) 放在操作数的后面,先去参与运算,再自身+1(-1)
例:
int a = 5;
int b = 3;
b = a++; //b=3因为a参与赋值运算并且a++,先赋值b=a,再自身+1,a=6。
b = ++a //b=7因为a参与赋值运算并且++a,先自身+1,上一句算出a=6,所以+1后为7,赋值给b
2. 赋值运算符(双目)
1、基础赋值运算符 =
自右向左运算符的符号优先级别最低
2、扩展赋值运算符 (算数运算符+基础赋值运算符)
+=: a+=b ==> a=a+b;
-=: a-=b ==> a=a-b;
short a = 5;
a += 1;//正确自动强制类型转换
a = a+1;//错误a是变量,如果要使用。需要强制类型转换a = (short)(a+1);
注:推荐使用扩展赋值运算符;1.提高执行效率。2.自动做强制类型转换。
3. 比较|关系运算符(双目)
1、> < >= <=
只能比较基本数据类型 byte short char int long float double
2、== !=
基本数据类型的数据,引用数据类型的数据都可以比较是否相等
最终的运算结果,都为boolean类型的值
int a=5;
int b=3;
System.out.println(a>=b); //true
System.out.println(a+3 != b-1); //true
4. 逻辑运算符(双目)
操作数值为boolean类型的表达式
& 两边的操作数 都是true才是true,一个为false,结果就为false
| 两边的操作数 一个为true就是true,两个都为false才是false
! 取反 (单目)
^ 相同为false,不同为true
短路 :如果第一个操作数已经能够决定最终的结果,第二个操作数不再执行
&& 两边的操作数 都是true才是true,一个为false,结果就为false
|| 两边的操作数 一个为true就是true,两个都为false才是false
推荐使用&& 或者 ||,提议提高效率
public class Operator05{
public static void main(String[] args){
System.out.println("--------------&-----------------");
System.out.println(true & false); //false
System.out.println(false & false); //false
System.out.println(true & true); //true
System.out.println("--------------|-----------------");
System.out.println(true | false); //true
System.out.println(false | false); //false
System.out.println(false | true); //true
System.out.println(true | true); //true
System.out.println("--------------!-----------------");
System.out.println(!false); //true
System.out.println(!true); //false
System.out.println("--------------^-----------------");
System.out.println(true ^ false); //true
System.out.println(false ^ false); //false
System.out.println(false ^ true); //true
System.out.println(true ^ true); //false
//测试短路
//System.out.println(5/0==0);
//System.out.println(false & 5/0==0); //false
System.out.println(false && 5/0==0); //false
}
5. 条件运算符(三目)
条件表达式 ? 值1 : 值2 ; ===>最终的结果不是值1就是值2
条件表达式是一个值为boolean类型的表达式
执行流程:
1.计算条件表达式
2.如果结果为true,整个条件运算符的结果为值1
3.如果结果为false,整个条件运算符的结果为值2
int a=5;
int b=7;
int max=a>b?a : b;
System.out.println(max);//7
6. 位运算符(双目)
先把操作数转为2进制,再去运算,得到结果转为十进制
& 同一位置的两个数如果两个都为1才是1,一个为0就是0
| 同一位置的两个数如果一个为1就是1,两个都为0才是0
^ 同一位置的两个数如果一相同为0,不同为1
位移运算符
右移>> 右移一位相当于除2
6>>2 == 6/4
左移<< 左移一位相当于乘2
5<<1 == 5*2
运算符优先级:
单目算数位关系,逻辑三目后赋值
练习题
1、
//练习
//自定义a,b变量,不同的值进行测试
boolean x = a < b ? ++a * 2 > b || a > b : a < b;
System.out.println(x);
2、
//练习
int k=20;
int j=8;
int totle = k++ + j-- + --j + ++k + k++ + j++ + k-- + --k + j++;
System.out.println("k="+k+",j="+j+",totle="+totle);
以上