一文学会Java运算符的使用
算术运算符
运算符 | 描述 |
---|---|
+ | 两数相加 |
- | 两数相减 |
* | 两数相乘 |
/ | 两数相除 |
% | 取模,返回两数相除的余数 |
++ | 自加一 |
- - | 自减一 |
public class User {
public static void main(String[] args) {
int a = 20;
int b = 10;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(b % a);
}
}
输出:
30
10
200
2
10
++,- -运算符
当++、- -出现在变量之前,先自加、自减1,再做赋值运算
public class User {
public static void main(String[] args) {
int a = 10;
int b = ++a;
System.out.println(a);// 11
System.out.println(b);// 11
}
}
当++,- -出现在变量之后,先做赋值运算,再自加、自减1
public class User {
public static void main(String[] args) {
int a = 10;
int b = a++;
System.out.println(b);// 10
System.out.println(a);// 11
}
}
扩展
+运算符有两个作用
①求和
public class User {
public static void main(String[] args) {
System.out.println(3 + 4);// 7
}
}
②字符串拼接
public class User {
public static void main(String[] args) {
System.out.println("Hello" + "Java" + "World");// HelloJavaWorld
}
}
关系运算符
运算符 | 描述 | 结果 |
---|---|---|
== | 判断值是否相等 | 是返回true,不是返回false |
!= | 判断值是否不相等 | 是返回trut,不是返回false |
>= | 判断左边的值是否大于等于右边 | 是返回true,不是返回false |
<= | 判断左边的值是否小于等于右边 | 是返回true,不是返回false |
> | 判断左边的值是否大于右边 | 是返回true,不是返回false |
< | 判断左边的值是否小于右边 | 是返回true,不是返回false |
public class User {
public static void main(String[] args) {
int a = 20;
int b = 10;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a <= b);
System.out.println(a >= b);
}
}
输出:
false
true
true
false
false
true
逻辑运算符
运算符 | 描述 | 结果 |
---|---|---|
& | 与 | 两边都为True,结果才为True |
│ | 或 | 有一边为True,结果就为True |
! | 非 | 真值变假,假值变真 |
&& | 逻辑与 | 两边都为True,结果才为True |
││ | 逻辑或 | 有一边为True,结果就为True |
public class User {
public static void main(String[] args) {
boolean a1 = true;
boolean a2 = false;
System.out.println(a1 && a2);
System.out.println(a1 || a2);
System.out.println(!a1);
}
}
输出:
false
true
false
与&和逻辑与&&
public class User {
public static void main(String[] args) {
// 与&
int a = 0;
int b = 1;
// 当左边表达式为false,右边的表达式依旧会执行
System.out.println(a > b & b > a++);// false
System.out.println(a); // 1
// 逻辑与&&
int c = 0;
int d = 1;
// 当左边的表达式为false,右边的表达式不执行(短路现象)
System.out.println(c > d && d > c++);// false
System.out.println(c); // 0
}
}
或|和逻辑或||
public class User {
public static void main(String[] args) {
// 或|
int a = 0;
int b = 1;
// 当左边表达式为true,右边的表达式依旧会执行
System.out.println(a < b | b > a++);// true
System.out.println(a); // 1
// 逻辑或||
int c = 0;
int d = 1;
// 当左边的表达式为true,右边的表达式不执行(短路现象)
System.out.println(c < d || d > c++);// true
System.out.println(c); // 0
}
}
总结
与&和或|要对所有条件都进行判断(无论左边是真假,右边都会执行)
逻辑与 &&当左边的表达式为false,右边的表达式不执行
逻辑或 || 当左边的表达式为true,右边的表达式不执行
什么时候使用&&,什么时候使用&
从效率方面来说,&&比&的效率高一些。
因为与&不管第一个表达式结果是什么,第二个表达式一定会执行。
大部分情况下都建议使用短路与&&,只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择与&。
赋值运算符
运算符 | 描述 |
---|---|
= | 直接赋值 |
+= | 加后赋值 |
-= | 减后赋值 |
*= | 乘后赋值 |
/= | 除后赋值 |
%= | 取模后赋值 |
public class User {
public static void main(String[] args) {
int a = 2;
int b = 1;
System.out.println(a += b);//a = a + b
System.out.println(a -= b);//a = a - b
System.out.println(a *= b);//a = a * b
System.out.println(a /= b);//a = a / b
System.out.println(a %= b);//a = a % b
}
}
输出:
3
2
2
2
0
条件运算符
表达式1?表达式2:表达式3
先判断表达式1的值,若为真则将表达式2的值做为整个表达式的值;若为假则将表达式3的值做为整个表达式的值。
举个栗子:判断a和b的大小,a>b如果成立max=a的值,不成立则max=b的值
public class User {
public static void main(String[] args) {
int a = 1, b = 2;
int max;
max = a > b?a:b;
System.out.println(max);
}
}
输出:
2
运算符优先级
Java中用到的运算符除了上面介绍的常用的赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符以外,还有其他的运算符。当一个表达式出现多种运算符符号,会按照运算符的优先级来决定运算顺序,Java中运算符优先级见下表
运算符 | 描述 | 优先级 |
---|---|---|
[] () . , ; | 分隔符 | 1 |
Instanceof ++ - - ! | 对象归类、自增自减、非运算 | 2 |
* / % | 算术乘除运算 | 3 |
+ - | 算术加减运算 | 4 |
>> << >>> | 移位运算 | 5 |
< <= > >= | 大小关系运算 | 6 |
== != | 相等关系运算 | 7 |
& | 按位与运算 | 8 |
^ | 按位异或运算 | 9 |
│ | 按位或运算 | 10 |
&& | 逻辑与运算 | 11 |
││ | 逻辑或运算 | 12 |
? : | 三目条件运算 | 13 |
= += -= *= /= &= | 赋值运算 | 14 |
到此这篇关于一文学会Java运算符的使用的文章就介绍到这了,更多相关Java运算符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341