A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 武汉分校-小舞 于 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!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马