• 【Thinking in Java-CHAPTER 3】操作符


    优先级

    赋值

    对象在使用c=d,那么c和d都指向原本只有d指向的那个对象。

    image

    方法调用中的别名问题:当一个对象作为参数传递到一个函数中,函数改变了这个参数,则改变了传递进来的对象;

    image

    自增和自减

    浮点型的变量也是可以++或--的。

    关系操作符

    double x=0.1;
    double y=0.1;
    System.out.println(x==y);

    输出:true

    Integer x=new Integer(47);
    Integer y=new Integer(47);
    System.out.println(x==y);
    System.out.println(x.equals(y));

    输出:false

              true

    基本数据类型直接使用==和!=即可,但除此之外的数据类型,如果要比较等价,需要使用equals方法;

    逻辑操作符

    Integer x=new Integer(47);
    Integer y=new Integer(47);
    System.out.println(x
    &&y); //出错,此处与C/C++不同

    短路现象:

    image

    移位操作符:>>,<<,>>>

    >>:

    11 >> 2,则是将数字11右移2位
    计算过程:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。

    <<:

    3 << 2,则是将数字3左移2位:

    计算过程:
      3 << 2
      首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:
      在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

    >>>:

    按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。

    类型转换

    将float或double转型为整型时,总是对该数字执行截尾。如果想要得到舍入操作,就需要使用java.lang.Math中的round()方法:

    double x=0.5;
    System.out.println((int)x);             //0
    System.out.println(Math.round(x));         //1
  • 相关阅读:
    线程安全
    转 接口和抽象类 虚方法 有什么区别
    转 面向对象的三个基本特征
    转载 泛型
    遍历list,字典
    转 拉姆达表达式,委托、匿名方法、Lambda表达式的演进
    int byte转换
    委托,匿名方法
    带参数线程,不带参数线程
    const readonly
  • 原文地址:https://www.cnblogs.com/XBWer/p/4442608.html
Copyright © 2020-2023  润新知