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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不存在的奇迹 中级黑马   /  2015-4-15 19:25  /  607 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运算符☆
        (1)算术运算符(+、-、*、/、%、++、--)
A:就是对敞亮和变量进行操作的符号
                B:“+”的用法
--加法
                        --正号
                        --字符串连接符
                C:“/”和“%”的区别               
★整数相除只能得到整数,如果想得到小数,必须将数据类型转化为浮点数类型,/取得是商,%取得是余数
                D:“++”和“--”的用法
                        --单独使用
                                放在操作数据的前面和后面效果一样
                                a++或者++a效果一样
                        --参与操作使用
                                放在操作数的前面:先自增或者自减,再参与操作
                                        int a = 10;
                                        int b = ++a;
                                放在操作数的后面:先参与操作,再自增或者自减
                                        int a = 10;
                                        int b = a++;
练习题:
int x = 4;
int y=(x++)+(++x)+(x*10)
请分别计算出x,y的值(6,70)
        (2)赋值运算符
=        赋值运算符,也是最基本的赋值运算符
例如int x = 10; 把10赋值给int类型的变量x
+=、-=、*=、/=、%=        扩展赋值运算符,将左边的加上,减去,乘以,除以,取余右边的,然后赋值给左边的

面试题:
                        short s = 1;s = s + 1;
                               
                        short s = 1;s += 1;
                        请问上面的代码哪个有问题?
解答:第一个有问题,因为short类型的变量s在和1做加法运算的时候,先把数据类型转换为int类型,在进行计算,所以再重新赋值给short类型会出现精度问题;而第二个没有问题,因为扩展赋值运算符其实隐含了自动强制转换。
s += 1     <------>  s = (s的数据类型)(s+1);
        (3)比较运算符
                A:==、!=、>、>=、<、<=
                B:无论运算符两端简单还是复杂最终结果是boolean类型。
                C:千万不要把==写成了=
        (4)逻辑运算符
& 与        有false则false
| 或        有true则true
^ 异或        相同则false,不同则true。(情侣关系)
! 非        非true则false,非false则true
&& 双与        结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
|| 双或        结果和|是一样的,只不过有短路效果。左边是true,右边不执行
★逻辑运算符用于连接boolean类型的表达式或者值

        (5)位运算符
& 位与运算,转化为二进制,有0则0
| 位或运算,转化为二进制,有1则1
^ 位异或运算,转化为二进制,相同则0,不同则1
~按位取反运算符,0变1,1变0
★ ^ 的特殊用法:一个数据针对另一个数据位异或两次,该数不变
<<:左移,左边最高位丢弃,右边补齐0
把<<左边的数据*2的移动次幂
3 << 2 = 3*2^2=12
>>:右移,最高位是0,左边补齐0;最高位是1,左边补齐1
把>>左边的数据除以2的移动次幂
-24>>2 = -24/(2^2)=-6
>>>:无符号右移,无论最高位是1还是0,左边补齐0
                面试题:
a.请实现两个变量的交换
--采用第三方变量
                        --用位异或运算符(记法:左边x、y、x,右边x^y)
x = x^y
y = x^y
x = x^y
--用变量相加的方法
x = x + y
y = x - y
x = x - y       
--一句话搞定
y = (x + y) - ( x = y)        
                        b.请用最有效率的方式计算出2乘以8的结果
                                2<<3

        (6)三元运算符
                A:格式
                        (比较表达式) ? 表达式1:表达式2;
                B:执行流程:
                        首先计算比较表达式的值,看是true还是false。
                        如果是true,表达式1就是结果。
                        如果是false,表达式2就是结果。
                C:案例:
                        a:比较两个数据是否相等
                        b:获取两个数据中的最大值
                        c:获取三个数据中的最大值

2 个回复

倒序浏览
lslkkk 来自手机 中级黑马 2015-4-15 19:38:37
沙发
我来顶贴
回复 使用道具 举报

真心感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马