JavaSE:运算符 (学习笔记)
目录
一,算术运算符
【1】 共同点:
【2】 不同点:
二,关系运算符
三,逻辑运算符
2,&和&&的区别和联系 { |和||的区别和联系 }---两题类似
四,赋值运算符
五,拓展赋值运算符
六,条件运算符
七,位运算符
八,运算符的优先级
九,运算符总结表
一,算术运算符
+, -, *, /, %, ++(自增),--(自减)
-
+ 的作用:(1)表示正数。(2)表示相加操作。(3)进行字符串的连接
-
% :用来求余数。
-
/ : 表示两个数相除运算
1,i++ 与 ++i 的异同之处 (i--和--i的异同之处)
【1】 共同点:
1、i++和++i都是变量自增1,都等价于i=i+1
2、如果i++,++i是一条单独的语句,两者没有任何区别
3、i++和++i的使用仅仅针对变量。 5++和++5会报错,因为5不是变量。
【2】 不同点:
如果i++,++i不是一条单独的语句,他们就有区别
i++ :先运算后增1。
++i : 先增1后运算。
二,关系运算符
>, <, >=, <=, ==, !=
1,关系运算符最终结果:要么是true,要么是false。
2,使用关系运算符,可以获得boolean的结果。
三,逻辑运算符
&, |, &&, ||, !, ^
1,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:true或者false。
2,逻辑与:& ——只要有一个操作数是false,那么结果一定是false。
3,短路与:&& ——效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算
了, 结果一定是false。
4,逻辑或:| ——只要有一个操作数是true,那么结果一定是true。
5,短路或:|| ——效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算
了, 结果一定是true。
6,逻辑非:! ——相反结果。
7,逻辑异或: ^ ——两个操作数相同,结果为false,不相同,结果为true。
2,&和&&的区别和联系 { |和||的区别和联系 }---两题类似
【1】联系
&和&&都可以用作逻辑与运算符,当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false。
前提条件:两边的操作数或者表达式都是boolean类型
【2】区别
1, &逻辑运算符称为 逻辑与运算符,&&逻辑运算符称为 短路与运算符,
对于&:无论任何情况,&两边的操作数或表达式都会参与计算。
对于&&:当&&左边的操作数为false或左边表达式结果为false时,&&右边的操作数或表达式将不参与计算,此时最终结果都为false。
综上所述,如果逻辑与运算的第一个操作数是false或第一个表达式的结果为false时,对于第二个操作数或表达式是否进行运算,对最终的结果没有影响,结果肯定是false。推介平时多使用&&,因为它效率更高些。
2. &还可以用作位运算符。当&两边操作数或两边表达式的结果不是boolean类型时,&用于按位与运算符的操作。
四,赋值运算符
=
1,= 的作用: 将等号右侧的值赋给等号左侧。
五,拓展赋值运算符
+=,-=, *=, /=
1,a+=b 相当于 a=a+b,两者的区别是:
(1)a+=b 可读性稍差,编译效率高,底层自动进行类型转换。
(2)a=a+b 可读性好,编译效率低,手动进行类型转换
//请问 a+=b 相当于 a=a+b,那么 a+=b 也相当于 a=b+a 吗?
对于基本数据类型来说:没区别
a:10 b:40
a=a+b a=b+a
a=50 a=50
对于String类型来说:不一样
a:"u" b:"x"
a=a+b a=b+a
a="ux" (正着拼) a="xu" (倒着拼)
六,条件运算符
? :
1,又称:三元运算符 / 三目运算符
2,格式: a?b:c [ 简写版if—else选择结构 ] 【注意: b 和c 必须是相同数据类型的】
其中a是一个布尔类型的表达式,返回结果要么是true要么是false。
通过a的结果决定 最终表达式的结果:
如果a的结果是true,那么表达式最终结果为b;
如果a的结果是false,那么表达式最终结果为c。
七,位运算符
&, |, ^, ~ , >>, <<, >>> (了解!!!)
1,运算符左右连接的是具体的数值
2, 按位与 & ; 按位或 | ; 按位异或 ^ ; 取反 ~ ;
左移运算符 >>:左移一位相当于乘2; 右移运算符 <<:右移一位相当于除2取离。
3,用最有效率的方法算出2乘以8等于多少
使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。对于位运算符“<<”, 是将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,位运算cpu直接支持的,效率最高。所以,2乘以8等于几的最效率的方法是2 << 3。
八,运算符的优先级
单目 > 算术 > 关系 > 逻辑 > 三目(条件) > 赋值
1,实际开发中我们不会写特别复杂的表达式,你要想先算谁就用 ( ) 。
九,运算符总结表