`
SereinChan
  • 浏览: 15396 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

运算符那点事儿

 
阅读更多

Java里面大体有六类运算符:

  1. 算术运算符;
  2. 赋值运算符;
  3. 比较运算符;
  4. 逻辑运算符;
  5. 位运算符;
  6. 三元运算符;

一、算术运算符

包括简单的“加减乘除(+ - * /)”,还有“取模(%)”,自增(++),自减(- -),字符串相加(+);下面介绍一些使用注意事项。

1)除法运算:虚拟机的除法运算结果的精度,由“除数”和“被除数”的最高精度决定。比如,5/3=1,因为5和3都是整数,所以结果会舍弃小数部分,只返回整数部分;

2)取模运算:所谓取模运算就是求余数。如果参与取模运算中有负数,则运算结果的符号(正负号)跟被模数(%左边的数)的符号相同。比如:


3)自增和自减:++和--表示变量进行自加1和自减1运算,这两个符号可以出现在变量的前面或者后面,分别代表其作自增或自减运算的时间不同。比如:

++a:变量a先回来“吃饭(自加1)”,再出去“玩(比如赋值给其他变量)”;

a++:变量a先出去“玩(比如赋值给其他变量)”,再回来“吃饭(自加1)”;

自减也是类似。


4)加号“+”作为字符串连接符:可以将两个字符串连接成一个字符串,前提是参与运算的变量有字符串,即字符数据和任何数据使用“+”都是进行字符串连接运算,最终都会变成字符串。常见如System.out.println进行输出时,括号里面用的“+”号连接输出的字符串;


附:转义字符

转义字符是指,通过反斜线“\”来转变其后面字母或者符号的意义。常见的转义字符如下:

\n:换行;

\r:按下回车键盘,回到本行行首;

(区别:在Linux中,换行由一个字符实现,即“\n”;而在windows的大多数软件中,换行由两个字符来实现,即“\r\n”;而Dos系统里能直接识别“\n”)

\b:退格;

\t:制表符;

\":双引号";

\':单引号';


二、赋值运算符

赋值运算通过等号“=”实现,并衍生出了“+=”、“-=”、“*=”、“/=”、“%=”。 但有些注意事项,举个例子,s=s+4 和s+=4是有区别的

1)s=s+4 :这个表达式里面进行了两次预算,先进行了加法运算,然后进行赋值运算。如果s是short型的变量,则这个表达式是错误的,因为先进行的s+4运算得到的是一个int型的结果,不能赋值给short型的变量s;

2)s+=4 :只进行了一次赋值运算。这个表达式如果s是short型的变量,也不会出错。因为其中包含了一个类型的自动转换动作,比如即+=运算符将结果赋给s时,自动强制转换成了short类型。


三、比较运算符

比较运算符的结果是boolean类型,即要么是true要么是false。有“==”、“!=”、“>=”、“<=”、“>”、“<”和“instanceof”七种运算。其中有一些注意事项:

1)==:该运算符有时候并不是比较两个值的大小,而是比较两者是否指向同一个对象。比如:

情况一:String s1 = "abc",String s2 = "abc" ;则s1==s2 返回的结果是true,因为它们两个指向同一个对象。

情况二:String s1=new String("abc");String s2=new String("abc");则s1==s2 返回的结果是false,因为它们两个并不是指向同一个对象。

所以,进行对象的数值相等比较时,建议使用或实现equals()方法,来进行比较。

2)instanceof:表示检查是否是类的对象,如“Hello” instanceof String,结果为true。表示字符串“Hello”是String类的对象。


四、逻辑运算符

逻辑运算符有与、或、非、异或四种逻辑运算形式。其参与运算的表达式的类型为boolean。

1)与:符号为&,表示都为真时结果才为true;&&表示“短路与”,即当遇到false,则直接判定为false,然后终止不再进行后面的判断。

2)或:符号为| ,表示只要有一个为真,结果就为true;即当遇到true,则直接判定为true,然后终止不再进行后面的判断。

3)异或:符号为^ ,表示两边的真假不同时,结果为true。如:true^false==ture;


五、位运算符

位运算是指对二进制进行里的位进行运算,包括左移、右移、无符号右移、与运算、或运算、异或运算和反码运算。具体如下:

1)左移:符号为<<,3<<2表示将3转换成二进制后,整体左移2位,移走留下的空位用零补上,其效果相当于“被移数*(2的“移动位数”次幂)”;
2)右移:符号为>>,3>>2表示将3换成二进制后,整体右移2位,移走留下的空位用被移数的最高位填补,其效果相当于“被移数/(2的“移动位数”次幂)”,结果舍去小数取整
3)无符号右移:符号为>>>,和右移类似,只不是移走后留下的空位都用零来填补。
4)与运算:符号为&,表示两个二进制数两两对应的位分别进行与运算。与运算常常用于取特定的位数。
5)或运算:符号为| ,表示两个二进制数两两对应的位分别进行或运算。
6)异或运算:符号为^,表示两个二进制数两两对应的位分别进行异或运算。其中有这样一个规律,一个数异或同一个数两次,结果还是同一个数,根据这个原理可以进行加密和解密运算。(思考:如何在不需要第三个变量的前提下,对两个整数变量进行互换)

7)反码:符号为~,表示将二进制数的每一位都进行取反操作,即0变成1,1变成0;


六、三元运算符
形式为:表达式1?表达式2:表达式3;
意思是,如果表达式1的值为true则返回表达式2的结果,否则返回表达式3。其实是if-else语句的一种简化表达形式。





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics