Java运算符
1.算术运算符
+ - * / % ++ --
+
在java中的意义有三个:- 代表正数
- 做加法运算符
- 字符串的连接
如果都是正数的时候是做加法运算符,如果遇到字符串这个时候
+
表示字符串的拼接
int a = 12;
String b = "21";
int c = 32;
System.out.println(a+b);//1221
System.out.println(a+c+b);4421
System.out.println(a+b+c);//122132
-
/
整数相除只能得到整数,如果需要得到小数需要把整数类型转换成小数。 -
在java中如果判断一个数是否被另一个数整除,可以使用
%
得到的值是否为0,
如果得到的数为0表示这个数可以被另一个数整除。 -
++
自增,当这个符号在变量后面的时候,先将变量中的值取出来进行赋值操作或者其他比较的操作。操作完之后自身在进行加1;当++
在变量的前面的时候,先自身加1,再将加1之后的结果赋值操作。
int x = 4; int y = (x++)+(++x)+(x*10);//y = 70
2.赋值运算符
= += -= *= /= %=
+=
把左边和右件的进行相加,然后把相加的结果赋值给左边。
避免类型转换。自动装箱和拆箱,相当于进行强制转换
short s = 1;
//s = s+1 在Java中整数默认为int类型
s = (short)(s+1);
s +=1;//这种进行自动装箱和拆箱的操作
3.关系(比较)运算符
== != >= < <=
关系运算符的操作结果为boolean类型;在Java中等于成==
== 可以比较基本数据类型和引用数据类型(比较引用数据类型比较的是地址值)
equals比较的是里面的值。
4.逻辑运算符
&
逻辑与,有false
则false
|
逻辑或,有true
则为true
^
逻辑异或,相同为false
,不同为true
!
逻辑非:非false
则true
,非true则false
&&
短路与,如果左边为fasle
,右边不执行||
短路或,如果左边为true
,右边不执行
和逻辑或不一样,逻辑或如果左边为true,右边会去执行,
如果左边为false,右边的表达式就不会执行
在开发中进行逻辑判断的时候使用短路与或者短路或
5.位运算符
-
&
按位与 有0则0,其它为1 -
|
按位或 有1则1,其它为0 -
^
按位异或 相同则0,不同则1(一个数被另一个数异或两次得到是原来的数)
2^3^3 得到的还是2
-
~
按位取反 按位补运算符翻转操作数的每一位 -
<<
按位左移 左移,右边补齐0,最高位不变(左移相当于乘法,2几次幂,幂就是移动的数) -
>>
按位右移 右移,左边补齐0,最高位不变(右移相当于除法,和上面一样)
System.out.println(2<<2);//向左移动2位:2 * 2 * 2 相当于 2 乘以2乘以2
System.out.println(2>>2);//向右移动2为:2 /2 /2 相当于 2除以2除以2
最有效率的算出2 * 8的结果:2<<3
>>>
无符号右移
按位与、按位或、按位异或、按位取反 进行操作的时候需要把十进制的数转换成二进制进行操作。
2 00000010
&
3 00000011
----------------- 有0则0,其它为1
2 00000010
2 00000010
|
3 00000011
----------------- 有1则1,其他为0
3 00000011
2 00000010
^
3 00000011
----------------- 相同的为0,不同的则为1
1 00000001
^
3 00000011
------------- 一个数按位异或两次,得到的结果为它本身 2^3^3 = 2
2 00000010
补从源码和补码
原码反码补码(类型转换的时候需要使用)
有符号数据表示法:
在原码中,最高位为符号位(从右到左,最左边的为最高位),符号位为0表示正数,符号位为1表示负数。其余的二进制位表示数值大小,也就是说在换算成十进制的时候最高位不用换算。
原码中如何表示正数7,和负数7 ?
0(符号位) 0000111 ----- >+7
1(符号位) 0000111 ------> -7
先不分正负数
8个1 二进制换算成十进制为255
7个1 二进制换算成十进制为127
2^7=128
2^6=64
2^5=32
反码:整数的反码和源码一致,负数的反码就是符号位不变,其余的二进制位对源码逐位取反即可。
补码:正数的补码和源码一致,负数的补码就是在其反码的基础上未位(最右边的二进制位)加1
+7 0 0000111(源码)
+7 0 0000111(反码)
+7 0 0000111(补码)
-7 1 0000111(源码)
-7 1 1111000(反码) +1
-7 1 1111001(补码)
正数的源码反码补码都是一样的。
负数的符号位源码反码补码都为1
如果二进制位为1,在加上1 ,逢二进一的原则,就会向前进一位,原来的二进制位变为0
如果二进制位为0,再减去1,需要向前一位借一位,如果还是不够再向前借一位,以此类推,减去1的二进制位变为1,1借了一位变为0
已知源码:10110100 表示一个负数
源码:10110100
反码:11001011 +1
补码:11001100
已知补码:11101110
补码:11101110 -1
反码:11101101
源码:10010010
MySQL中的运算符
+ - / *
> < >= <= != =
|| & !
or and not
in
not in
is null 是否为null
is not null 不为空
not is null
between ... and ...
like
>any
<any <=any
<=> 表示都表示等于,但是不常用,我们常使用的是"="
= 不能操作null值比较; 返回结果为null
<=> 可以操作null。
<> != 表示不等于。
可以判断数值、字符串、表达式是否相等。如果不相等返回1,否则返回0
!= <> 都不能操作null.
> < >= <= 都不能操作null.
& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 按位左移动
>> 按位右移动
EL操作符
. 访问一个Bean属性或者一个映射条目
[] 访问一个数组或者链表的元素
() 组织一个子表达式以改变优先级
+ 加
- 减或负
* 乘
/ or div 除
% or mod 取模
== or eq 测试是否相等
!= or ne 测试是否不等
< or lt 测试是否小于
> or gt 测试是否大于
<= or le 测试是否小于等于
>= or ge 测试是否大于等于
&& or and 测试逻辑与
|| or or 测试逻辑或
! or not 测试取反
empty 测试是否空值
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100789.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...