四、运算符
4.1 算数运算符(Java中,整数使用这些算数运算符,无论怎么计算,也不会得到小数)
算术运算符包括:+、-、* 、/、%、++、- -。
整型和整型的运算结果就是整型,不会出现浮点型。否则就会出现浮点型。
/**
* @author QHJ
* @date 2022/8/22 15:40
* @description: 运算符
*/
public class Calculate {
public static void main(String[] args) {
int a = 10;
int b = 3;
float c = 3.0f;
double d = 3.0;
System.out.println(a + b); // 13
System.out.println(a - b); // 7
System.out.println(a * b); // 30
System.out.println(a / c); // 3.3333333
System.out.println(a / b); // 3
System.out.println(a / d); // 3.3333333333333335
System.out.println(a % c); // 1.0
System.out.println(a % d); // 1.0
}
}
4.1.1 ++运算/–运算:变量自增1/自减1
- 独立运算:独立运算时,变量前++和变量后++没有区别;
- 混合运算(i=1)
- 变量前++(++i):先加一再赋值。
- 变量后++(i++):先赋值再加一。
public static void main(String[] args) { int a = 5; //先对a进行+1操作,再把a的值作为++a的值 int b = ++a; // a = a + 1 = 6, b = a = 6 //先取a的值作为a++的值,在对a进行+1操作 int c = a++; // c = a = 6, a = a + 1 = 7 System.out.println(a+","+b);//7,6 System.out.println(a+","+c);//7,6 }
4.1.2 +符号在字符串中的操作
-
加法:纯数字的加法操作;
-
连接/拼接:在遇到字符串的时候,表示连接、拼接的含义。
public static void main(String[] args) { int a = 5; int b = 6; String c = "Hello"; System.out.println(a+b);//11:进行纯数字加操作 System.out.println(a+c);//5Hello:进行字符串拼接操作 }
4.2 赋值运算符
赋值运算符包括:=、+=、-=、*=、/+、%=。
赋值运算符,就是将符号右边的值,赋给左边的变量。
复合赋值运算符其中隐含了一个强制类型转换。
如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换。例如:
int b = 4;
b += 3.5;
System.out.println(b); // 7
会把 b 设置为(int)(x+3.5)。
4.3 比较运算符
比较运算符包括:==、<、>、<=、>=、!=。
比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false 。
4.4 逻辑运算符
逻辑运算符包括:&&、||、!、&、|,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值 true 或者 false。
其中,&& 和 || 运算符是按照“短路”方式来求值的:如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。
但是,& 和 | 运算符不管第一个条件为 true 还是 false,依然会检查第二个,也就是说,& 和 | 性能不如 && 和 ||,但用法一样。
4.5 三元运算符
三元运算符用于替代 if-else,可以使用一行代码完成条件判断的要求。
4.5.1 三元运算符格式:
数据类型 变量名 = 布尔类型表达式?结果1:结果2
4.5.2 三元运算符运算方式:
- 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量;
- 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。
小贴士:
运算符的优先级:单目乘除为关系,逻辑三目后赋值。
单目:单目运算符+ –(负数) ++ – 等
乘除:算数单目运算符* / % + -
为:位移单目运算符<< >>
关系:关系单目运算符> < >= <= == !=
逻辑:逻辑单目运算符&& || & | ^
三目:三目单目运算符A > B ? X : Y
后:无意义,仅仅为了凑字数
赋值:赋值=
4.6 位运算符
位运算符包括:&、|、^、~、>>、<<、>>>。位运算符操作的不是整型数值(int、long、short、char、byte)本身,而是整数数值对应的二进制。
处理整型类型时,可以直接对组成整数的各个位完成操作。
-
& 与 |
应用在布尔值上时,& 和 | 运算符也会得到一个布尔值,这些与 && 和 || 类似,但是 & 和 | 运算符不采用“短路”方式来求值。也就是说,得到计算结果之前两个操作数都需要计算。
-
区别 >> 与 >>>
像 >> 表示带符号位右移(正0负1),而 >>> 代表无符号位右移。
>> 运算符 4 >> 1 -> 0100 右移一位 -> 0010(4/2^1) = 2 -4 >> 1 -> 1100 右移一位 -> 1010 = -2 >>> 运算符 4 >>> 1 -> 2 -4 >>> 1 -> 2147483646 负数的二进制与正数不太一样
4.7 运算符的优先级
如果不适用圆括号,就按照给出的运算符优先级次序进行计算。同一个级别的运算符按照从左到右的次序进行计算(但右结合运算符除外)。