【1】=的作用: 将等号右侧的值赋给等号左侧:
int age = 19;
int age = 10+3+8;
【2】练习:
public class TestOpe06{
public static void main(String[] args){
//任意给出两个数,交换两个数并输出:
//1.给出两个数:
int num1 = 10;
int num2 = 20;
//2.输出交换前的两个数:
System.out.println("交换前:"+num1+"\t"+num2);
//3.交换
/*
错误代码:
num1 = num2;
num2 = num1;
*/
//解决办法:
//引入一个中间变量:
int t;
t = num1;
num1 = num2;
num2 = t;
/*
int t;
t = num2;
num2 = num1;
num1 = t;
*/
//4.输出交换后的两个数:
System.out.println("交换后:"+num1+"\t"+num2);
}
}
面试题:两个数交换的四种方式:https://www.cnblogs.com/Brad-Lee/p/5808299.html
扩展赋值运算符
【1】代码:
public class TestOpe07{
public static void main(String[] args){
//实现功能:给出三个数,求和:
//1.给出三个数:
int num1 = 10;
int num2 = 20;
int num3 = 30;
//2.求和
//int sum = num1+num2+num3;
//定义一个变量,用来接收和:
int sum = 0;
sum = sum + num1;//等效: sum += num1;
sum = sum + num2;// sum += num2;
sum = sum + num3;//sum += num3;
//3.将和输出:
System.out.println("和:"+sum);
}
}
内存:
【2】a+=b 和 a=a+b 区别:
(1)a+=b 可读性稍差 编译效率高 底层自动进行类型转换
(2)a=a+b 可读性好 编译效率低 手动进行类型转换
【3】面试题
(1)请问a+=b相当于a=a+b,那么也相当于 a=b+a吗?
(2)下面的代码哪一句出错: 4
byte a = 10; --->1
int b = 20; --->2
a+=b; ---->3
a = a+b ;---->4
更正: a = (byte)(a+b);
关系运算符
public class TestOpe08{
public static void main(String[] args){
//>,<,>=,<=,==,!=
//关系运算符最终结果:要么是true要么是false
System.out.println(4>9);//false
System.out.println(4<9);//true
System.out.println(4>=9);//false
System.out.println(4<=9);//true
System.out.println(4==9);//false
System.out.println(4!=9);//true
System.out.println((5<9)!=(6==8));//true
}
}
逻辑运算符
&,|, &&,||,!,^
逻辑运算符:进行逻辑运算的,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:要么是true,要么false
代码:
public class TestOpe09{
public static void main(String[] args){
// 逻辑与 :& 规律:只要有一个操作数是false,那么结果一定是false
System.out.println(true&true);
System.out.println(true&false);
System.out.println(false&false);
System.out.println(false&true);
// 短路与:&& 规律:效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false
System.out.println(true&&true);
System.out.println(true&&false);
System.out.println(false&&false);
System.out.println(false&&true);
// 逻辑或:| 规律:只要有一个操作数是true,那么结果一定是true
System.out.println(true|true);
System.out.println(true|false);
System.out.println(false|false);
System.out.println(false|true);
// 短路或:|| 规律:效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
System.out.println(true||true);
System.out.println(true||false);
System.out.println(false||false);
System.out.println(false||true);
//逻辑非: ! 规律:相反结果
System.out.println(!true);//false
System.out.println(!false);//true
//逻辑异或: ^ 规律:两个操作数相同,结果为false,不相同,结果为true
System.out.println(true^true);
System.out.println(true^false);
System.out.println(false^false);
System.out.println(false^true);
}
}
再做一个加深的练习:看代码 说结果:
public class TestOpe10{
public static void main(String[] args){
int i=8;
System.out.println((5>7)&&(i++==2)); //false
System.out.println(i); //8
int a=8;
System.out.println((5>7)&(a++==2)); //false
System.out.println(a); //9
int m=8;
System.out.println((5<7)&&(m++==2)); //false
System.out.println(m); //9
int b=2;
System.out.println((5<7)&(b++==2)); //true
System.out.println(b); //3
int c=2;
System.out.println((5<7)&(++c==2)); //false
System.out.println(c); //3
}
}