1.运算符
1.1 算术运算符
开发中运用的算术运算符:
+ - * / % () =
算术运算符展示
// 算术运算符演示
class Demo1 {
public static void main(String[] args) {
// 定义两个 int 类型变量
int num1 = 10;
int num2 = 20;
/*
注意事项:
1. 在代码运行过程中,变量存储数据内容有可能会随着代码执行发生改变。
2. 变量存储数据有且只能是在被赋值的情况下才可以改变,未赋值不变
*/
num1 = num1 + num2; // num1 = 30 num2 = 20
num1 = num1 * num2; // num1 = 600 num2 = 20
num1 = num1 - num2; // num1 = 580 num2 = 20;
num1 = num1 / num2; // num1 = 29 num2 = 20;
num1 = num1 % num2; // num1 = 9 num2 = 20;
System.out.println(num1);
System.out.println(num2);
}
}
1.2增强版运算符
+= -= *= %= /=
案例:
int num1 = 10;
int num2 = 20;
num1 = num1 + num2; ==> num1 += num2;优势:
1. 减少变量书写,避免错误!!!
2. 带有一定的特殊功能,包含隐含类型转换!!!
1.3 自增自减运算符
【建议】
1. 自增自减充满了歧义性,开发中尽量减少自增自减运算符使用。
2. 推荐使用 += 1 和 -= 1 替代自增自减运算符。
3. 自增自减运算符操作单独成行【语法要求】
1. 自增自减运算符有且只可以操作【变量】
2. 自增自减运算符在变量之前或者变量之后有不同的效果。【语法效果】
1. 自增自减运算符在变量之后,首先取值变量保存数据内容,参与当前行代码执行,再来执行自增自减操作
2. 自增自减运算符在变量之前,首先执行自增自减操作,对变量数据进行修改,再取值变量保存数据内容,参与当前行代
码执行。
// 面试题1
int num = 5;
int ret = num++ * ++num;num = ? 7
ret = ? 35
/*
num++ 首先取值 num 数据参与表达式运算 取值内容为 5
num自增操作 ==> 6++num 首先自增操作,num ==> 7
取值num存储结果参与表达式运算 7
ret = 5 * 7 ==>35
*/
// 面试题2
int num = 5;
++(num++)++;num = ERROR 【语法错误】
/*
分析问题:
1. 自增自减运算符有且只可以操作【变量】
2. ()里面的内容是一个整体,可以认为是一个【常量】
语法冲突!!!报错!!!
*/
1.4 关系运算符
格式:
> < >= <= == !=
对外数据形式:
boolean true or false
关系运算符两边的数据结果满足关系运算符所需,结果为 true,否则为 false
// 关系运算符
class Demo3 {
public static void main(String[] args) {
boolean ret = 5 > 3;
System.out.println(ret); // true
ret = 5 < 3;
System.out.println(ret); // false
ret = 5 >= 5;
System.out.println(ret); // true
ret = 5 <= 15;
System.out.println(ret); // true
ret = 5 != 15;
System.out.println(ret); // true
ret = 5 == 15;
System.out.println(ret); // false
}
}
1.5 逻辑运算符
&& 与
同真为真,有假【即】假
|| 或
有真【即】真,同假为假! 非 犟 取反
真变假,假变真
// 逻辑运算符
class Demo4 {
public static void main(String[] args) {
boolean ret = 10 > 5 && 5 > 1;
System.out.println(ret); // true
ret = 10 > 5 && 1 > 5;
System.out.println(ret); // false
ret = 10 > 5 || 1 > 5;
System.out.println(ret); // true
ret = 10 < 5 || 1 > 5;
System.out.println(ret); // false
ret = !(5 > 5);
System.out.println(ret); // true
ret = !(5 == 5);
System.out.println(ret); // false
}
}
1.6 逻辑运算符短路原则
后期可以利用逻辑运算符短路原则,进行条件排列,提高开发效率,提高运行效率
int num = 10;
boolean ret = 10 > 50 && ++num > 5;
ret = false;
num = 10;
/*
逻辑与 同真为真,有假【即】假
逻辑与短路原则:
逻辑与表达式,出现 false 条件,整个表达式结果已明确为 false,计算机为了提高效率,从 false 条件开始,之后的表达式不再执行。
*/
int num = 10;
boolean ret = 10 > 5 || ++num > 5;
ret = true;
num = 10;
/*
逻辑或 有真【即】真,同假为假
逻辑或短路原则:
逻辑或表达式,出现 true 条件,整个表达式结果已明确为 true,计算机为了提高效率,从 true 条件开始,之后的表达式不再执行。
*/