运算符的优先级(从高到低)(运算符的优先级从高到低的顺序是)
如果在程序中,要改变运算顺序,可以使用()。
一、算术运算符
(加);-(减);*(乘);/(除);%(模运算:相当于取余运算);
如果运算符两边的数据类型一致,结果的类型也和它们一样(整数运算结果都会是int型的)
如果运算符两边的数据类型不一致,结果的类型和容量比较大的类型一致;
自增和自减都属于一元运算符(就是只有一个数据参与运算);
(自增运算符):
自增运算符,根据相对于运算的数据的位置,又分为左自增和右自增;
int a = 10;
a:左自增:就算变量在自身的基础上执行加一运算,然后将运算的结果参与其他运算
a :右自增:会先在内存中创建一个临时空间,然后将变量原来的值放在临时空间中,然后对变量执行运算加一运算,然后拿临时空间中的值(就算加一运算之前的值)参与其他运算
– -(自减运算符):
自减运算符的规律和自增运算符一样,唯一不同的是,执行的是减一运算;
(字符串连接符):当 左右两边有任意一边是一个字符串时,运算结果就是将两边的值拼接成一个新的字符串;
二、赋值运算符
赋值运算符左边只能是一个变量;
=:表示将符号右边的值赋值给左边的变量;
=:-=;*=;/=;%=:复合赋值运算符;复合赋值运算符会自动对结果进行强制转换;
=:a = b 相当于 a = a b;
三、比较运算符
是对两个数据进行比较运算,运算结果一定是布尔型数据;
>;(大于)
>=;(大于或等于)
<;(小于)
<=;(小于或等于)
==:(恒等于)
!=;(不等于)
所有基本类型数据都可以使用 == 进行相等性验证;
对于区间判断不能连续的写在一起;
3<a<6 错误的
四、逻辑运算符
参与逻辑运算的都是布尔型数据;
逻辑运算的结果也都是布尔型数据;
&:与,相当于并且;只有运算符两边都为true,结果才是true;否则,任意一边是false,运算结果就是false;
&&:短路与,运算结果和&是一样的;
|:或,相当于或者:只要两边有一遍是true,结果就是true;只有两边都是false,结果才是false;
||:短路或
^:异或:只有两边不相同,结果才是true;否则为false;
上面几个都是双元运算符;
!:非
一元运算符;
逻辑运算表:!true = false; !false = true;
&和&&的异同:
相同点:运算的结果都一样;
不同点:&运算,不论左边是什么,都会运算右边;
&&运算,如果左边是false,就不会去运算右边;如果左边是true,再运算右边;
|和||的异同:
相同点:运算结果都相同;
不同点:|运算,不论左边是什么,都运算右边;
||如果左边是true,就不会运算右边;如果左边是false,在运算右边;
问题:什么时候使用 & 和 | ?
如果右边必须参与运算,就因该使用&或|;
五、三元运算符
元就是表示参与运算的数据;
格式:
变量 = 布尔表达式 ? 值一 : 值二;
六、位运算符
(<<)(>>)(>>> )
移位操作符操作的运算对象也是二进制的“位”,但是它们只可以被用来处理整数类型(基本
类型的一种)。左移位操作符(<<)能将操作符左边的运算对象向左移动操作符右侧指定的
位数(在低位补 0)。“有符号”右移位操作符(>>)则将操作符左边的运算对象向右移动操
作符右侧指定的位数。“有符号”右移位操作符使用了“符号扩展”:若符号为正,则在高位插
入0;若符号为负,则在高位插入1。Java中增加了一种“无符号”右移位操作符(>>>),它
使用了“零扩展”:无论正负,都在高位插入0。这一操作符是C或C 没有的。
& 按位与(AND):对应的二进制位进行与操作,两个都为1才为1,其他情况均为0
| 按位或(OR):对应的二进制位进行或操作,两个都为0才为0,其他情况均为1
^ 按位异或(XOR):当对应二进制位值相同,该位为0 否则为1
~ 按位非(NOT):对每个二进制位的内容求反,即1变成0,0变成1
位操作符可与等号(=)联合使用,以便合并运算操作和赋值操作:&=,|=和^=都是合法
的(由于~是一元操作符,所以不可与=联合使用)。