Day 3 运算符
1. 运算符
1.1 算术运算符
语法类型:+ - * / % () = 加、减、乘、除、取余、小括号、赋值号
注意:1. Java中优先级最高的就是小括号
2. 【小括号里面的内容】相对于外面的内容而言是一个整体,它是一个【常量】
class Demo1 {
public static void main(String[] args){
int num1 = 10;
int num2 = 20;
num1 = num1 + num2;
num1 = num1 * num2;
num1 = num1 - num2;
num1 = num1 / num2;
num1 = num2 % num1;
System.out.println(num1);
System.out.println(num2);
}
}
注意: 1. 变量有且只能是再被赋值之后才能修改内容,未赋值不能进行修改
2. 取余操作只是针对整数,小数没有没有取余操作
偷懒专用运算符
+= -= *= /= %=
class Demo2 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
num1 += num2;
num1 *= num2;
num1 -= num2;
num1 /= num2;
num2 %= num1;
num1 %= num2;
System.out.println(num1);
System.out.println(num2);
}
}
1.2 关系运算符
语法类型: > < >= <= != == 大于、小于、大于等于、小于等于、不等于、等于判断
注意: 1. 关系运算符的运算结果是一个boolean数据类型,只能是true/false
2. 一般用于条件判断、数据过滤...
class Demo3 {
public static void main(String[] args){
boolean ret = false;
ret = 5 > 10;
System.out.println(ret);
ret = 5 < 10;
System.out.println(ret);
ret = 5 >= 5;
System.out.println(ret);
ret = 5 <= 2;
System.out.println(ret);
ret = 5 != 10;
System.out.println(ret);
ret = 5 == 10;
System.out.println(ret);
}
}
1.3 自增自减运算符
【明确】
自增自减运算符【有且只能操作变量】,不可以操作常量
【建议】
1. 平时的开发中尽量减少或者标准化使用自增自减运算符
2. 尽量使用 += 1或者 -= 1来替代 ++或 --,提高可读性
3. 如果非要使用,单独成行
语法类型:
++ :自增,操作的变量自增1;等价于 += 1
-- :自减,操作的变量自减1;等价于 -= 1
前后关系:
num++ : ++处于变量之后,先用未自增1的变量来执行当前行代码,再来执行变量的自加1运算,参与下面的代码运算
++num : +++处于变量之前,先执行变量的自加1运算,再用自加1过后的变量来执行当前行代码
-- 同理
class Demo5 {
public static void main(String[] args){
int num1 = 10;
System.out.println("num1++ : " + num1++);
System.out.println("num1 : " + num1);
System.out.println("++num1 : " + ++num1);
System.out.println("num1 : " + num1);
}
注释:
错误使用:
1.
int num2 = 20;
++(num2++);
2.
int num3 = 30;
++num3++;
class Demo7 {
public static void main(String[] args) {
int num = 5;
int ret = num++ * ++num;
System.out.println("ret : " + ret);
System.out.println("num : " + num);
}
}
1.4 逻辑运算符
语法类型:
&& 与 运算特点: 同真为真,有假【即】假
|| 或 运算特点: 有真【即】真,同假为假
! 非(取反)
注意: 1. 关系运算符的运算结果是一个boolean数据类型,只能是true/false
2. 一般用于条件判断、数据过滤...
class Demo9 {
public static void main(String[] args) {
boolean ret = true;
ret = 5 > 3 && 10 > 8;
System.out.println("ret : " + ret);
ret = 5 < 3 && 10 > 8;
System.out.println("ret : " + ret);
ret = 5 > 3 || 10 > 8;
System.out.println("ret : " + ret);
ret = 5 < 3 || 10 < 8;
System.out.println("ret : " + ret);
ret = !(5 > 3);
System.out.println("ret : " + ret);
}
}
【逻辑运算短路问题】
class Demo4 {
public static void main(String[] args) {
int num = 10;
boolean ret = 10 > 15 && num++ >= 11;
System.out.println("num : " + num);
System.out.println("ret : " + ret);
int num1 = 11;
boolean ret1 = 10 > 5 || ++num1 > 5;
System.out.println("num1 : " + num1);
System.out.println("ret1 : " + ret1);
}
}
在逻辑运算里,括号当一个整体不具备优先级,从左到右依次执行
在普通加减乘除运算里,就有优先级
class Demo1 {
public static void main(String[] args) {
int num = 6;
boolean ret = num > 5 && (num-- < 20 || num++ > 10);
System.out.println(ret);
}
}