运算符
Java中运算符分为:
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算符
一、算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
a++与++a的区别(a--和--a同理)?
单独使用时,功能一模一样,都是让a的值增加1;
不同的是与赋值号“=”一起使用时,y=++a表示先将a的值增加1后,再把值赋给y;
而,y=a++表示先把a的值给y,a自己再增加1.
二、关系运算符
关系运算符用来比较两个值的关系。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。
- 大于:>
- 小于: <
- 大于等于:> =
- 小于等于:< =
- 等于:==
- 不等于:!=
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
三、位运算符
位运算要用到二进制,这里说一下进制:
- 二进制 0,1 满2进1
- 八进制 0~7 满8进1,用0开头表示
- 十进制 0~9 满10进1,
- 十六进制 0~9,A~F 满16进1 用0x表示开头
进制转换:
十进制:751=1*10^0+5*10^1+7*10^2=1+50+700=751
二进制转十进制:
要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右
1101.01=1*2^0+0*2^1+1*2^2+1*2^3 +0*2^(-1)+1*2^(-2)=1+0+4+8+0+0.25=13.25
所以总结起来通用公式为:
abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2-1+f*2-2+g*2-3(10)
十进制整数转二进制:除2取余,逆序排列法
十进制小数转换成二进制小数:采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
如:0.625=0.101
0.625*2=1.25======取出整数部分1
0.25*2=0.5========取出整数部分0
0.5*2=1==========取出整数部分1
再如:0.7=0.1 0110 0110...
0.7*2=1.4========取出整数部分1
0.4*2=0.8========取出整数部分0
0.8*2=1.6========取出整数部分1
0.6*2=1.2========取出整数部分1
0.2*2=0.4========取出整数部分0
0.4*2=0.8========取出整数部分0
0.8*2=1.6========取出整数部分1
0.6*2=1.2========取出整数部分1
0.2*2=0.4========取出整数部分0
原码:正数的原码是它转换成的二进制数;负数的原码是它的绝对值转换成的二进制数,然后最高位补1(符号位)
反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
在计算机中 正数,负数都是通过补码的形式保存的。
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设A = 60,B = 13;它们的二进制格式表示将如下:
A=00000000 00000000 00000000 00111100
B=00000000 00000000 00000000 00001101
A&B=00000000 00000000 00000000 00001100
A | B=00000000 00000000 00000000 00111101
A^B=00000000 00000000 00000000 00110001
~A=11111111 11111111 11111111 11000011(翻转操作数的每一位,即0变成1,1变成0 得到补码)
11111111 11111111 11111111 11000010 (反码)
1000000 00000000 00000000 00111101(原码)
下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:
操作符 | 描述 | 例子 |
---|---|---|
& | 位于,如果相同位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 位或,如果相同位都是0,则结果为0,否则为1 | (A | B)得到61,即 0011 1101 |
^ | 异或,如果相同位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 取非,翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 左移,左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 右移,左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 无符号右移,左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
四、逻辑运算符(得到结果为Boolean类型,true 或 false)
与(短路与):&& 若第一个表达式为false则不执行第二个表达式
② 或:| | ③ 非:! ④ 异或:^ 表达式仅有一个为 true 返回 true
五、条件运算符
条件运算符(?:)也称为三元运算符
语法:表达式(返回结果为boolean)? 表达式 1 : 表达式 2
返回结果为 true 则执行 表达式 1 ,为 false 则执行 表达式 2