java基础语法2
运算符
1.算数运算符
运算符 | 含义 |
---|---|
+ | 求和(也可作字符串拼接) |
- | 求差(也可作负号) |
* | 求积 |
/ | 求商 |
% | 求余数(求模) |
++ | 自加一 |
-- | 自减一 |
注意:++a和a++的区别
当++出现在变量前面时,会先给变量自加一,然后再做赋值运算
int x = 5;
int y = ++x;
System.out.println(x); // 6
System.out.println(y); // 6
当++出现在变量后面时,会先做赋值运算,然后再给变量自加一
int m = 5;
int n = m++;
System.out.println(n); // 5
System.out.println(m); // 6
要注意在print中
public class Demo1 {
public static void main(String[] args) {
int a = 2;
System.out.println(a++);//2
}
}
public class Demo1 {
public static void main(String[] args) {
int b = 2;
System.out.println(++b);//3
}
}
public class Demo1 {
public static void main(String[] args) {
int a = 5;
System.out.println(++a + a++ + ++a);//6+6+8=20
/*
第一组操作(++a):先执行一组操作,返回计算后的结果。计算前a=5,计算后a=6。此时a为6,返回值为6。
第二组操作(a++):先执行一组操作,返回计算前的结果。计算前a=6,计算后a=7。此时a为7,返回值为6。
第三组操作(++a):先执行一组操作,返回计算后的结果。计算前a=7,计算后a=8。此时a为8,返回值为8。
*/
}
}
不管++出现在前还是后,变量最后都会自加一
+作为字符串拼接:
int a = 100;
int b = 200;
int c = a + b;
// 这里的 + 两边都是数字,所以加法运算
System.out.println(a + "+" + b + " = " + a + b);//100+200=100200
System.out.println(a + "+" + b + " = " + (a + b));//100+200=300
注意:
-
当 + 运算符两边都是
数字类型
的时候,求和。 -
当 + 运算符两边的“
任意一边
”是字符串类型
,那么这个+会进行字符串拼接操作。
2.关系运算符
运算符 | 含义 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
注意:关系运算符运算结果都是布尔类型
3.逻辑运算符
● &—逻辑与 | —逻辑或 !—逻辑非 ● && —短路与 || —短路或 ^ —逻辑异
a | b | a&b | a|b | !a | a^b | a&&b | a||b |
---|---|---|---|---|---|---|---|
true | true | true | true | false | false | true | true |
true | false | false | true | false | true | false | true |
false | true | false | true | true | true | false | true |
false | false | false | false | true | false | false | false |
● “&”和“&&”的区别: ● 单&时,左边无论真假,右边都进行运算;
public class Demo2 {
public static void main(String[] args) {
int a = 2;
int b = 3;
int c = 4;
System.out.println(a>b & a>b++);//false
System.out.println(b);//4
System.out.println(a<c & a<c++);//true
System.out.println(c);//5
//不论返回结果是什么,右边表达式都执行
}
}
● 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
public class Demo2 {
public static void main(String[] args) {
int d = 5;
int e = 6;
System.out.println(d > e && d > e++);//false
System.out.println(e); // 6
// 使用短路与&&的时候,当左边的表达式为false的时候,右边 的表达式不执行,即短路。
}
}
从效率方面来说,&&比&的效率高一些。 因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。
以后的开发中,短路与&&和逻辑与还是需要同时并存的。 大部分情况下都建议使用短路与&&只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择逻辑与&。
● “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算.
4.赋值运算符
注意:
public class Demo3 {
public static void main(String[] args) {
//扩展运算符
int a=3;
int b=4;
a+=b; //相当于a=a+b;
System.out.println("a="+a+"\nb="+b);//a=7 b=4
a=3;
a*=b+3; //相当于a=a*(b+3)
System.out.println("a="+a+"\nb="+b);//a=21 b=4
}
}
5.条件运算符(三目运算符)
● x ? y : z ● 语法:(条件表达式)? 表达式1:表达式2; ● 条件表达式结果为true,运算后的结果是表达式1; 为false,运算后的 结果是表达式2;
public class Demo3 {
public static void main(String[] args) {
int a =80;
String b = a>60?"及格":"不及格";
System.out.println(b);//及格
}
}
6.位运算符
● 日常开发中位运算使用相对较少,但是巧妙的使用位运算可以大量减少运行开销, 优化算法。
7.表达式的运算顺序