黑马程序员技术交流社区
标题: 【武汉校区】独家分享:Java的运算符 [打印本页]
作者: 武汉分校-小舞 时间: 2016-3-23 10:24
标题: 【武汉校区】独家分享:Java的运算符
本帖最后由 武汉分校-小舞 于 2016-3-23 10:25 编辑
【武汉校区】独家分享:Java的运算符
概述:对常量和变量进行操作的符号称为运算符
Java的运算符分类
算术运算符算术运算符包括+,-,*,/,%等基本的算术运算
+ 加法运算
例如:3+4结果是7
- 减法运算
例如:3-4结果是-1
* 乘法运算
例如:3*4结果是12
/ 除法运算
注意:整数相除只能得到整数
例如:3/2=1;
% 取模(余数)运算
例如:5%2结果是1
++ 自增运算
单独使用:
例如:ina=0;
a++和++a的结果都是一样,结果都会自增1
参与运算:
例如:inta=0;
Int c=a++;// 先把a赋值给c,然后a自增1
Int c=++a;// 先让a自增1,然后把a赋值给c
-- 自减运算
单独使用:
例如:ina=0;
a--和--a的结果都是一样,结果都会自减1
参与运算:
例如:inta=0;
Int c=a--;// 先把a赋值给c,然后a自减1
Int c=--a;// 先让a自减1,然后把a赋值给c
赋值运算符基本的赋值运算
“=”
例如:int a=10;//将数据10 赋值 给整数类型的变量a
扩展的赋值元算符
“+=”,“-=”,“*=”,“/=”,“%=”
运算规律:
a+=b;//将”=”左边和右边的运算结果赋值给左边(其他几个同理)
例如:inta=2;
a+=2结果是4
a*=2结果是4
a/=2 结果是1
a%=2 结果是0
注意:a+=b不是等价于a=a+b;而是等价于a=(a的数据类型)(a+b)
例如:
Shorta=3;a=a+4;//编译报错, 因为3是int类型,a是short类型,运算结果应该也是int类型,用short类型接受有精度损失
Short a=3;a+=4;//正常编译和运算,a的结果是7
因为a+=4;等价于a=(short)(a+4);结果为a等于7
比较运算符“>”,“>=”,“<”,“<=”,“==”,“!=”
比较运算符的运算结果都是boolean类型
例如:int a=3;int b=4;
a>b false
a>=b false
a<b true
a<=b true
a==b false
a!=b true
注意:>=( <=) 表示大于(小于)或者等于
“==” 表示比较两个数是否相等
逻辑元算符逻辑运算符是对 boolean类型的数据进行运算
“&”,“|”,“^”,“!”,“&&”,“||”
&(与运算):两边都是true结果才是true,否则结果为false
|(或运算): 两边都是false结果才是false,否则结果为true
^(异或运算): 两边相同为false,不同为true
!(非运算):false变为true,true变为false
&&(双与运算)
左边如果结果为false,右边不参与运算
||(双或运算)
左边如果结果为ture,右边不参与运算
位运算符位运算是对二进制数据进行操作的
注意: 计算机在做数据运算的时候都是通过补码进行运算的
&位与运算
将二进制数据逐一进行&与运算,1^1结果才是1,否则结果是0
例如:3&4
3 00000011
& 4 00000100
00000000
结果为0
|位或运算
将二进制数据逐一进行|与运算,0^0结果才是0,否则结果是1
例如:3|4
3 00000011
| 4 00000100
00000111
结果为7
^位异或
相同则为0,不同则为1
例如:3^4
3 00000011
^ 4 00000100
00000111
结果为7
<<左移
将二进制数据从最高向左移动需要的位数,空位补0
例如:2<<2
二进制 十进制
0000000000000000 00000000 00000010 2
<<2 (00)00000000000000 00000000 0000001000 8
括号里的内容是移除的位数
>>右移
将二进制数据从最低向右做移动需要的位数
最高位是0,空位补0
最高位是1,空补1
例如1:24>>2
0000000000000000 00000000 00011000 24
右移动2位空位补0
>>2 0000000000 00000000 00000000 000110(00) 6
例如2:-24>>2
-24的源码
10000000 00000000 00000000 00011000 源码
11111111 11111111 11111111 11100111 反码
11111111 11111111 11111111 11101000 补码
用补码计算
11111111 11111111 11111111 11101000
右移动2位空位补1
>>2 111111111111111111 11111111 111010(00) 补码
111111111 11111111 11111111 111001 反码
1000000000 00000000 00000000 000110 源码
结果为-6
>>>无符号右移
将二进制数据从最低向右做移动需要的位数
无论最高位是0还是1,空都补0
-24>>>2
-24的源码
10000000 00000000 00000000 00011000 源码
11111111 11111111 11111111 11100111 反码
11111111 11111111 11111111 11101000 补码
用补码计算
11111111 11111111 11111111 11101000
0011111111 11111111 11111111 111010(00) 补码
结果为:1073741818
三目运算符格式:
关系表达式?表达式1:表达式2
执行流程
首先判断关系表达式的结果是true还是false
如果是true,就执行表达式1
如果false,就执行表达式2
例如:
Int a=3;intb=4;
求a,b中较大的值
Intmax=a>b?a:b;//max的结果为4
想获取最新传智播客武汉中心分享技术文章请加QQ 1641907557 ,后期会分享更多与实体班同步教程,助你冲击月薪20K!
推荐阅读:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |