算术运算符与算术表达式
一元运算符
运算符 | 运算 | 用法 | 意义 |
---|---|---|---|
- | 取相反值 | -a | 将a表示正负的符号取相反 |
++ | 自加1 | ++a或者a++ | 运算前a自加1或者运算后a自加1 |
-- | 自减1 | --a或者a-- | 运算前a自减1或者运算后a自减1 |
二元运算符
运算符 | 运算 | 用法 | 意义 |
+ | 加法 | a+b | a的值加上b的值 |
- | 减法 | a-b | a的值减去b的值 |
* | 乘法 | a*b | a的值乘以b的值 |
/ | 除法 | a/b | a的值除以b的值 |
% | 除法 | a%b | a的值除以b的值取余数 |
运算关系符
运算符 | 运算 | 用法 | 意义 |
---|---|---|---|
== | 等于 | a==b | 当a与b完全相同时结果为true否则为false |
!= | 不等于 | a!=b | 当a不等于b时结果为true否则为false |
> | 大于 | a>b | 当a大于b时结果为ture否则为false |
< | 小于 | a<b | 当a小于b时结果为true否则为false |
>= | 大于或等于 | a>=b | 当a大于等于b时结果为true否则为false |
<= | 小于或等于 | a<=b | 当a小于或等于b时结果为true否则为false |
注意:在应用==运算符时比较的是两个对象是否相同,而不是比较内容。
逻辑运算符
运算符 | 运算 | 用法 | 意义 |
---|---|---|---|
! | 条件非 | !a | 当a为假时结果为真否者为假 |
&& | 条件与 | a&&b | 当a与b都为真时结果为true否者为假 |
|| | 条件或 | a||b | 当a,b之中有至少一个为真时结果为真否则为假 |
这里单独说一下^运算符,该运算符为条件异或运算符,因为在c语言中是代表的是平方,所以一开始有点懵。
public static void main(String[] args)
{
int a=2;
int b=2;
int c=3;
int d;
d=a^b;
System.out.println(d);
d=a^c;
System.out.println(d);
}
这里第一个输出的d为0,因为a的值与b的值相同,而异或运算符当两边的相等为假,用0表示,
同样第二个输出为1,a不等于c,a^c为真,用1来表示。
位运算符
位运算符是将整数转化为二进制数进行运算的,即使用位运算符时先将整数转换为二进制数在进行运算。
位运算符 | 运算 | 用法 | 意义 |
---|---|---|---|
& | 按位,与 | a&b | a与b的二进制数按照位,进行与运算 |
| | 按位,或 | a|b | a与b的二进制数按照位,进行或运算 |
^ | 按位,异或 | a^b | a与b的二进制数按位,进行异或运算 |
~ | 按位,取反 | ~a | a的二进制数按位取反 |
>> | 算术右移 | a>>n | 将a的各位右移n位 |
<< | 算术左移 | a<<n | 将a的各位左移n位 |
>>> | 无符号右移 | a>>>n | 将a的各位右移n位,空位补0 |
public static void main(String[] args)
{
int a=16;//二进制数为0001 0000(前面的0我没全打出来知道还有就行了)
int b=15;//0000 1111
int c=14;//0000 1110
int d=2;//0000 0010
int e=1;//0000 0001
int m;
m=a&b;
//a的二进制数与的b的二进制数按对应的位,进行与运算,如对应位0&&1为假取0,全部取完
//后得0000 0000,只有当对应位上都为1时才取得1,有一个为0则取0
System.out.println("a与b按位与为:"+m);//输出结果为0
m=b&c;
//b的二进制数与c得二进制数按位取进行与运算(同上),有取后为0000 1110换为整数为14
System.out.println("b与c按位与为:"+m);//输出结果为14
m=a|b;
//a的二进制数与b得二进制数按位或,如对应位0||1为真取1,结果为0001 1111换为整数为31
System.out.println("a与b按位或为:"+m);//输出结果31
m=b|c;
//二进制数按位或运算后,0000 1111
System.out.println("b与c按位或为:"+m);//输出结果15
m=a^b;
/*注意0和1异或,0和0异或都是当或运算,1和1异或时为相反
这里为 a=1 0000(二位数进制)
b=0 1111
对应为都为0和1的异或,按或取为1 1111=31
*/
System.out.println("a与b按位异或为:"+m);//输出结果为31
m=b^c;
/* b=0 1111
* c=0 1110
这里出现了1和1的异或取相反为0,结果为0 0001=1
*/
System.out.println("b与c按位异或为:"+m);//输出结果为1
}
按位取反涉及到计算机的反码与补码,大体上就是正整数取反得其本身+1得负数,负整数取反就是其本身+1的绝对值。