1、算术运算符:
类 | 运 | 说 |
基本运算符 | + | 加 |
取余运算符 | % | 取余 |
递增或递减 | ++ | 递增 |
5%4=1
2%5=2
100%5=0
下面给一个格式:
a%b
它的值就是a除以b的余数。
这就是取余。
练习:输出20除5的余数。
仔细思考。
答案:
public class a{
public static void main(String [] args){
System.out.println(5 );
}
}
输出结果:
5
有人肯定会奇怪,不应该是20%5吗?
其实是小学数学的知识了,注意题目“20
除5”,不是“除以”。
如果单独看没有什么不同,但如果和别的符号放在一起,就大不一样了。
如:
int a=10,b=20,c=0; //这也一种定义方式,a,b均为int类型
c=++a+b;
和
int a=10,b=20,d=0;
d=b+a++;
请问c和d的值分别是什么?
ans:c=31,d=30
为什么呢?
因为当++在前时,现将a递增,再计算表达式(将相同类型的数据用运算符号按一定的规则连接起来所组成的有意义的式子)的值,再赋给=前的变量;而++在后时,是先将表达式的值先赋给变量,在给a递增。这就是他们的区别。
2、关系运算符:
类型 | 说明 |
== | 等于 |
> | 大于 |
<</span> | 小于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
3、逻辑运算符
主要有三种:
&& 和
|| 或
! 非
他们都是与不布尔型的表达式使用,格式:
[表达式1]&&[表达式2]
[表达式1]||[表达式2]
![表达式]
&&的意思是:只有表达式1,表达式2的值都是true,这个表达式的值才是true,反之这是true。
如:
5>4&&6>2
这个式子的值就是true
||的意思是:表达式1与表达式2中有一个为true,一个为false,或两个均为true,它的值为true。
如:
5<4&&6>2
这个式子的值就是true
!的意思是:取与表达式的值相反的值
如:
!9>0
9>0是true,取反就是false。
4、位运算符:
~ 按位取反
& 按位与
| 按位或
^ 按位异或
>> 右移
>>> 右移补零
<< 左移
如:45转二进制
45/2=22……1
22/2=11……0
11/2=5……1
5/2=2……1
2/2=1……0
1/2=0……1
然后由下向上读余数,即:101101
这就是结果。
如:101101转十进制
1*2^5+0*2^4+1*2^3+1*2^2+0*2^1+1*2^0=45
懂了吗?
下面我们来讲讲这几种运算符。
首先是按位取反,格式:
~a
什么意思呢?
设a的二进制是00100101(byte是八位,前面补零)
取反的就是1变0,0变1.
如~a=11011010
下面再将按位与,格式:
a&b
设a=10001110,b=11100110
和的概念我们已经学过,若两边都为true则为true,这里也同样,只不过换成数字,true是1,false是0.
也就是将a的每位数与b的对应数比较,如:a&b=10000110
下面是按位或,格式:
a|b
设a=11101110,b=00101101
或的概念是两边一个true,一个false或两个均为true,值就为true。
同样的,a|b=11101111
然后是异或,格式:
a^b
异或的意思相信大家应该能猜到一二,在或的基础上加上个异,那就是除去个两个都为true,因为它们相同。
这就是了,即两个一个为0,一个为1,则值为1.
设a=11110000,b=10010110则
a^b=01100110
下面是移位,格式:
a>>N
a>>>N
a<<N
先讲a>>N,即将a右移N位,保留符号。
如10001000>>2=00100010
a<<N就不多讲了,就是将每位向左移。
a>>>N,是无视符号的
这里的讲一下二进制是怎么表示符号的
如2转换后为00000010
-2就是11111101,即取反。
-2>>>2=00111111
而-2>>2=11111110
5、条件运算符(又叫三元运算符)
变量=[布尔型表达式]?若为true的值:若为false的值;
什么意思呢?
即如果表达式的值为true,则把:前的值赋给变量;反之,则把:后的值赋给变量。
这应该很好理解,如:
int a=b>c?1:0;
对于此式,如果b>c,a=1,如果b<=c(即不符合b>c),则a=0.
6、赋值运算符
变量=表达式;
即把表达式的值赋给变量。
下面再讲讲运算符的优先级:
优先级 | 运 | 解 |
1 | [ | 分隔符 |
2 | ++ | 递增减运算 |
3 | * | 算术乘除运算 |
4 | + | 算术加减运算 |
5 | >> | 移位运算 |
6 | <= | 大小关系运算 |
7 | == | 相等关系运算 |
8 | & | 按位与运算 |
9 | ^ | 按位异或运算 |
10 | | | 按位或运算 |
11 | && | 布尔逻辑与运算 |
12 | || | 布尔逻辑或运算 |
13 | ?: | 条件运算 |
14 | = | 赋值运算 |
作业:
1、写出下列表达式的值:
12&23
11|22
2^4
~3
2>3
1>2&&5>4
2、将下列数转化为二进制
23
444
67
2
8
-20
-222
3、将下列数转化为十进制
11100010
11111111
00100111
11100101