1.运算符的分类
1.算术运算符:+(加法)、-(减法)、*(乘法)、/(除法)、%(取模/取余)、++(自增)、--(自减)
2.赋值运算符:=(赋值)、+=(加等)、-=(减等)、*=(乘等)、/=(除等)、%=(模等/取余等)
3.关系运算符:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)、instanceof(对象是否是类的实例)
4.逻辑运算符:&&(短路与)、||(短路或)、^(异或)、&(逻辑与)、|(逻辑或)、!(逻辑非)
5.位运算符:&(按位与)、|(按位或)、^(按位异或)、~(取反)、>>(按位右移)、<<(按位左移)
6.其他运算符:?:(条件运算符)、+(字符串连接符)
2.各类运算符详解
1.算术运算
算数运算符分一元运算符(一个操作数)和二元运算符(两个操作数)
二元运算符:+(加法)、-(减法)、*(乘法)、/(除法)、%(取模/取余)
如果整数进行运算:有一个操作数是long型,那么结果就是long型。操作数没有long,结果就是int,不管其中哪个操作数是byte还是short还是int
如果是浮点数进行运算:只要有一个是double型,结果就是double型。只有两个操作数都是float型时,结果才是float型。
(关于类型转换后面会单独讲,了解这两个即可)
一元运算符:
a++和++a的区别:
++a是指a先自身加1,a的值变为a+1,再进行运算,输出结果a+1,此时a的值是a+1。
a++是指先运算,输出结果为a,a自身加1,a的值变为a+1,此时a的值是a+1
int a=3;
int b=++a;
此时输出ab:a的值是4,b的值是4
int a=3;
int b=a++;
此时输出ab:a的值是4,b的值是3
2.赋值运算符:
=(赋值)用法:讲等号右边的操作数赋值给左边
例:a=b 讲b的值赋给a,且b的值不变
+=(加等)、-=(减等)、*=(乘等)、/=(除等)、%=(模等/取余等)用法类似
例:
a+=b 相当于 a=a+b、a-=b 相当于 a=a-b、a*=b 相当于 a=a*b。。。。
int a=3;int b=4;a=a+b;等价于int a=3;int b=4; a=a+b;
输出结果a为7,b为4。
3.关系运算符:
所有的关系运算符输出结果只有true/false
=(赋值)是赋值运算符、==(等于)才是判断两个操作数是否相等的运算符
==(等于)、!=(不等于)适用于所有数据结构
>(大于)、<(小于)、>=(大于等于)、<=(小于等于)仅适用于byte、short、int、long、float、double、char
(instanceof暂时不用了解)
4.逻辑运算符:
逻辑运算符是用来操作布尔型(true/false)的运算符
同时^(异或)、&(逻辑与)、|(逻辑或)这三个也是位运算符
&(逻辑与):两个操作数同时为true,结果为true
|(逻辑或):两个操作数有一个为true,结果为true
&&(短路与):只要有一个为false,结果为false
||(短路或):只要有一个为true,结果为true
^(异或):两个操作数相同为false,不同为true
!(逻辑非):取反 例:!true的值为false
|(逻辑或)与||(短路或)区别:
“||”: 如果左边计算后的操作数为true,右边则不再执行,返回true;
“|”:前后两个操作数都会进行计算。也就是说:“|”不存在短路。
&(逻辑与)与&&(短路与)区别同上
例:
boolean c=1>2&&2>(3/0);
System.out.println(c);//不报错,不运行&&后面代码
boolean d=1>2&2>(3/0);
System.out.println(d);//报错,会运行&后面的代码
5.位运算符:
位运算符是将操作数转化位2进制后的操作(具体2进制有关内容自行学习)
&(按位与)、|(按位或)、^(按位异或)、~(取反):这四个运算符和逻辑运算符用法一致,只是将两个十进制变成转换为2进制后,每一位的逻辑运算后,再组成的新的二进制,最后转换为十进制
>>(按位右移)、<<(按位左移):这两个运算符,向左1位相当于操作数的乘2,向右1位相当于操作数除2取商
例:
int a=3*2*2;
int b=3<<2;
int c=12/2/2;
int d=12>>2;
a的值和b的值相等,c的值和d的值也相等
5.其他运算符:
+(字符串连接符):讲两个字符串来接起来,组成新的字符串
俩个操作数只要有一个是字符串类型,系统就会将另一个变成字符串再连接。
例:
System.out.println(3+4);//输出7
System.out.println(3+"4");//输出34
System.out.println(3+3+"4");//输出64 (第一个为算术运算符的加法,第二个为字符串连接符)
?:(条件运算符):
格式:x?y:z
其中x为布尔型表达式,如果x的值为true输出y的值,z的值为false输出z的值
例:
int score1=40;
int score2=80;
String reslut1=score1>60?"及格":"不及格";
String reslut2=score2>60?"及格":"不及格";
System.out.println(reslut1);//输出不及格
System.out.println(reslut2);//输出及格