Java笔记(五)……运算符

主宰稳场 提交于 2020-03-27 08:34:13

算术运算符

operator1

算术运算符的注意问题:

如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。

对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。

例如:int x=3510;x=x/1000*1000; x的结果是3

“+”除字符串相加功能外,还能把非字符串转换成字符串 ,

例如:System.out.println("5+5="+5+5);//打印结果是5+5=55

转义字符:

通过 \ 来转变后面字母或者符号的含义

\n:换行

\b:退格

\r:按下回车键。windows系统中,回车符是由两个字符来表示\r\n

\t:制表符

赋值运算符

符号:

= , +=, -=, *=, /=, %=

+和+=的区别:

   1: short s = 4;
   2: //两次运算,中间有一个提升过程,所以编译失败
   3: s = s + 5;
   4: //一次运算,只做赋值运算,内部有一个自动转换动作,所以编译通过
   5: s += 5;

 

比较运算符

operator2

结果是boolean型

逻辑运算符

operator3

   1: //与(&),有一方为假,结果为假
   2: true & true = true;
   3: true & false = false;
   4: false & false = false;
   5: //或(|),有一方为真,结果为真
   6: true | true = true;
   7: true | false = true;
   8: false | false = false;
   9: //异或(^),两边相同,结果为假
  10: true ^ true = false;
  11: true ^ false = true;
  12: false ^ false = false;
  13: //非(!)
  14: !true = false;
  15: !false = true;

&与&&(短路)的区别:

&:无论左边是什么,右边都运算

&&:如果左边为假,右边不运算

|与||的(短路)的区别:

|:无论左边是什么,右边都运算

||:如果左边为真,右边不运算

位运算符

operator4

operator5

>>(右移)即为除以2的N次幂

<<(左移)即为乘以2的N次幂

小技巧:

交换两个数的值(不经过第三方变量)

   1: //通过第三方变量
   2: int temp = n;
   3: n = m;
   4: m = temp;
   5: System.out.println("n = "+n+";m = "+m);
   6:  
   7: //有可能超出范围,有局限性
   8: n = n + m;
   9: m = n - m;
  10: n = n - m;
  11: System.out.println("n = "+n+";m = "+m);
  12:  
  13: //利用位运算符
  14: n = n ^ m;
  15: m = n ^ m;
  16: n = n ^ m;
  17: System.out.println("n = "+n+";m = "+m);

位运算在进制转换的应用

   1: class OperatorDemo2 
   2: {
   3:     //Hex码表
   4:     static char[] list = {'0','1','2','3','4','5',
   5:                             '6','7','8','9','A',
   6:                             'B','C','D','E','F'};
   7:     public static void main(String[] args) 
   8:     {
   9:         toHex(66660);
  10:     }
  11:     public static void toHex(int n)
  12:     {
  13:         //存在有效位,继续递归
  14:         if(n > 0)
  15:             //采用>>>而不是>>,因为>>对负数不安全
  16:             toHex(n>>>4);
  17:         //不存在有效位,则返回
  18:         if(n == 0)
  19:             return;
  20:         //提取并打印最低四位
  21:         System.out.print(list[n&0x0F]);
  22:     }
  23: }

三元运算符

格式:

(条件表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;

示例:

获取两个数中大数。

int x=3,y=4,z;

z = (x>y)?x:y;//z变量存储的就是两个数的大数。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!