运算符
以下用途解释为常规用法,部分特殊用法的解释在后面
算数运算符
名称 | 符号 | 用途 | 用法举例 |
---|---|---|---|
加运算符 | + | 计算数字之间的和 | a+b |
减运算符 | - | 计算数字之间的差 | c-b |
乘运算符 | * | 计算数字之间的积 | a*b |
除运算符 | / | 计算数字之间的商 | a/b |
求余运算符 | % | 计算数对数的余数 | a%b |
自减运算符 | – | 数字自己减少1 | –a或a– |
自增运算符 | ++ | 数字自己增加1 | ++a或a++ |
注意点:
"+“既可以是运算符,也可以用于字符串拼接。另外,当char类型字符与一个数字用”+"进行运算时,字符会通过查找ASCII表对应的数字,转化为数字后参与运算。
String str1 = "Hello"; String str2 = "World"; String str3 = str1+str2; System.out.println(str3); //这里输出的str3就是字符串"HelloWorld" char c1 = 'a'; //a对应ASCII表的值为97 int b = 'a'+1; System.out.println(b); //这里输出的值为98
“–“与”++”,放在前后位置是有一点区别的,当运算符写在变量前面,变量先执行自增/自减,后再进行赋值;当运算符写在变量后面,变量先进行赋值,后执行自增/自减;
int i = 0; int j = 0; int a = i++; int b = ++j; System.out.println(a); //值为0 System.out.println(b); //值为1 //不进行赋值操作,两种写法效果相同,无影响 i++; 等同于 ++i;
关系运算符
运算符 | 用法说明 |
---|---|
> | a>b,判断a是否大于b,成立返回true,不成立返回false |
>= | a>=b,判断a是否大于等于b,成立返回true,不成立返回false |
< | a<b,判断a是否小于b,成立返回true,不成立返回false |
<= | a<=b,判断a是否小于等于b,成立返回true,不成立返回false |
== | a==b,判断a是否等于b,成立返回true,不成立返回false |
!= | a!=b,判断a是否不等于b,成立返回true,不成立返回false |
赋值运算符
运算符 | 解释 | 等价于 |
---|---|---|
= | 赋值,a=10 | a=10 |
+= | 加后赋值,a+=b | a=a+b |
-+ | 减后赋值,a-=b | a=a-b |
*= | 乘后赋值,a*=b | a=a*b |
/= | 除后赋值,a/=b | a=a/b |
%= | 取余后赋值,a%=b | a=a%b |
三元运算符与括号
符号 | 含义 |
---|---|
?: | 判断式?true运行:false运行; |
() | 括号的优先级是最高的,可以利用()包裹需要优先运算的部分 |
三元运算符举例:
"?“前面放一个关系表达式,结果位true则运行”:“之前的代码,如果结果为false则运行”:"之后的代码
int a = 0; int b = 1; int c = a>b ? a:b; System.out.println(c); //a>b的值是false,所以":"后面的b赋值给了c,输出1
一般可用于求最大值
//求三个身高的最高 Scanner sc =new Scanner(System.in); System.out.println("请输入第一个身高"); int hight1 = sc.nextInt(); System.out.println("请输入第二个身高"); int hight2 = sc.nextInt(); System.out.println("请输入第三个身高"); int hight3 = sc.nextInt(); //hight1与hight2比较,true则返回hight1,否则就是hight2高 int best = hight1 > hight2 ? hight1 : hight2; //上面两个中,大的值赋值给了best,best再与hight3比较,得到三个数中最大的值赋给bestOne int bestOne = best > hight3 ? best : hight3; System.out.println(bestOne);
逻辑运算符
运算符 | 说明 | 用法 |
---|---|---|
& | 逻辑且 | a&b,当a和b都为true,返回true,否则返回false |
| | 逻辑或 | a|b,当a和b有一个为true,就返回true |
^ | 逻辑异或 | a^b,当a和b的结果不相同,返回true,否则返回false |
! | 逻辑非 | !a,a的值为true,则!a为false,取相反值 |
&& | 短路且 | a&&b 只要有一个不成立,后面的就不用计算了 |
|| | 短路或 | a||b 只要有一个成立,那么后面的也不用运算了 |
- 短路运算符用于提高程序运行效率,上面例子a&&b,只要a为false,后面的b就不会进行判断了,整个结果直接为false
- a||b中,只要a为true,后面的b就不会进行判断了,整个结果直接为true
instanceof 对象运算符
该运算符的使用与多态、继承有关,多态中,父类对象无法访问子类重写的方法,将父类对象转为子类对象,则可以访问子类重写的方法。运算符左边的操作元是一个对象,右边的操作元是一个类,判断左边对象是否属于右边的类。
假设:Dog 类是Animal类的子类,Dog类重写Animal的eat()方法
Animal a = new Dog();
a.eat(); //此时会报错
//这里a instanceof Dog 的结果是true,并且将a对象转为Dog的对象d
//相当于强制转换:Dog d = (Dog)a;
if(a instanceof Dog d){
d.eat();//这里就可以调用
}