赋值运算符
赋值运算符,就是将符号右边的值,赋给左边的变量。
符号:=
- 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制
类型转换原则进行处理。 - 支持连续赋值。
- 扩展赋值运算符: +=, -=, *=, /=, %=
赋值运算符 | |
---|---|
= | 赋值 |
+= | 加后赋值 |
-= | 减后赋值 |
*= | 减后赋值 |
/= | 除后赋值 |
%= | 取模后赋值 |
public class Demo1 {
public static void main(String[] args) {
// 定义变量
int i = 3; // 将3赋值给变量i
i = i + 2; // 将变量i和2相加,再赋值给变量i
System.out.println(i);
// +=: 赋值运算符, 将=左边的变量和=右边的值进行操作,再赋值给变量
int j = 10;
j += 5; // j = j + 5
System.out.println(j);
int m = 10;
m -= 5; // m = m ‐ 5;
System.out.println(m);
System.out.println("‐‐‐‐‐‐‐‐‐‐");
byte b = 1;
// b = b + 2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失
// b += 2; // 可以
b = (byte) (b + 2);
System.out.println(b);
}
}
思考1:
int i = 1;
i *= 0.1;
System.out.println(i);//0
i++;
System.out.println(i);// 1
思考2:
int m = 2;
int n = 3;
n *= m++; //先算n *= m再++
System.out.println("m=" + m);//3
System.out.println("n=" + n);//6
比较运算符
比较运算符又叫关系运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false 。
赋值运算符 | |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 比较值是否相等 |
!= | 比较值是否不相等 |
- 比较运算符的结果都是
boolean
型,也就是要么是true
,要么是false
。 - 比较运算符“==”不能误写成“=” 。
public class Demo2 {
public static void main(String[] args) {
System.out.println(3 == 3); // true
System.out.println(3 == 4); // false
System.out.println(3 != 4); // true
System.out.println(3 > 4); // false
System.out.println(3 < 4); // true
System.out.println(5 <= 4); // false
System.out.println(4 >= 4); // true
// 注意
int i = 3;
int j = 4;
System.out.println(i = j); // 将j赋值给i,输出i
System.out.println(i == j); // true
}
}
逻辑运算符
-
逻辑运算符,是用来对两个布尔类型进行运算的,运算结果都是布尔值
true
或者false
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
1.逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3<x<6 ,应该写成 x>3 & x<6
。
2.“&”和“&&”的区别:
-
单&时,左边无论真假,
右边都进行运算
; -
双&时,
如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
。
- “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
- 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
public class Demo3 {
public static void main(String[] args) {
// & 与: 有false则false,
System.out.println(false & false); // false
System.out.println(false & true); // false
System.out.println(true & false); // false
System.out.println(true & true); // true
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
// | 或: 有true则ture,
System.out.println(false | false); // false
System.out.println(false | true); // true
System.out.println(true | false); // true
System.out.println(true | true);// true
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
// ! 非: 取反
System.out.println(!true); // false
System.out.println(!false); // true
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
// ^ 异或: 不同为true,相同为false
System.out.println(false ^ false); // false
System.out.println(false ^ true); // true
System.out.println(true ^ false); // true
System.out.println(true ^ true);// false
int i = 3;
int j = 4;
//如果左边的为true还会执行后面的,为false不执行后面的
System.out.println(i == j && ++i > 2);
System.out.println(i); // 3
System.out.println(j); // 4
//如果左边为true就不执行后面的,为false执行后面的
System.out.println(i != j || ++i > 2);
System.out.println(i);// 3
System.out.println(j);// 4
}
}
练习1:
public static void main(String[] args) {
int x=1;
int y=1;
if(x++==2& ++y==2){//左边无论真假,右边都进行运算,
//x++==2为假 因为x=1不等于2 ,所有后面的会执行,++y==2为真,因为先加再比较
x=7;
}
System.out.println("x="+x+"y="+y);//x=2y=2
}
练习2:
int x=1,y=1;
if(x++==2 && ++y==2){//如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
//进不去判断因为x++==2为假,因为是&&逻辑运算符,后面的++y==2就不会运算则y=1,x=2
x=7;
}
System.out.println("x="+x+"y="+y);
练习3:
int x = 1,y = 1;
if(x++==1 | ++y==1){
//左边无论真假,右边都进行运算;。因为x++==1为真所以为x=7
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=2
练习4:
int x = 1,y = 1;
if(x++==1 || ++y==1){
//当左边为真,右边不参与运算。因为x++==1为真所以为x=7,++y==1不执行则y=1
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=1
三元运算符
格式:
(条件表达式)?表达式1:表达式2;
-
条件表达式为true,运算后的结果是表达式1;
-
条件表达式为false,运算后的结果是表达式2;
表达式1和表达式2为同种类型
三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句
2)三元运算符要求必须返回一个结果。
3)if后的代码块可有多个语句
public class Demo4 {
public static void main(String[] args) {
int a = 30;
int b = 30;
int c = a > b ? 100 : 20;
System.out.println(c);
}
}
练习:
获取两个数中的较大数
int num1=0,num2=1;
System.out.println(num1>num2?num1:num2);
获取三个数中的较大数
int a = 5, b = 8 , c = 9;
a=a>b?a:b; //a与b相比较,将较大值赋值给a
a=a>c?a:c; //已经获得较大值得a再与c相比较,将较大值再次赋值给a
System.out.println(a); //输出a的值为9