• Java笔记(五)……运算符


    算术运算符

    operator1

    算术运算符的注意问题:

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

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

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

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

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

    转义字符:

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

    :换行

    :退格

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

    :制表符

    赋值运算符

    符号:

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

    +和+=的区别:

       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变量存储的就是两个数的大数。

  • 相关阅读:
    算法:最小公倍数的求解方法
    使用C语言中qsort()函数对浮点型数组无法成功排序的问题
    用两个栈模拟实现一个队列
    单链表反向查找
    单链表逆序
    斐波那契(Fibonacci)数列的几种计算机解法
    最大子列和问题
    Visual Studio个人常用快捷键
    数字根(digital root)
    秦九韶算法(霍纳算法)求解多项式
  • 原文地址:https://www.cnblogs.com/ShawnWithSmallEyes/p/3371352.html
Copyright © 2020-2023  润新知