操作符

柔光的暖阳◎ 2022-08-21 04:49 362阅读 0赞

赋值

  1. Data a = new Data();
  2. Data b = new Data();
  3. b = a;

这里的赋值是把a的引用赋给b,a没有了引用会被垃圾回收器自动清理。

1.方法调用中的别名问题

把除基本类型(int, double, float…)外的对象(包括数组)传递给方法,则方法可以修改该对象,因为传递给方法的是这个对象的引用。但是基本类型的话不行。

测试对象的等价性

  1. Integer n1 = new Integer(1);
  2. Integer n2 = new Integer(1);
  3. n1 == n2 ? //false
  4. n1 != n2 ? //true

n1,n2是两个对象的引用。如果要比较的话,应该用n1.equals(n2);但是这个equals方法并不适用于基本类型

  1. class MyData{
  2. int a;
  3. }
  4. MyData data1 = new Mydata();
  5. data1.a = 1;
  6. MyData data2 = new Mydata();
  7. data2.a = 1;
  8. data1.equals(data2); //false

因为equals(object类的方法)方法默认的是比较引用,除非在自己的新类中重写equals方法,才能比较值。

移位运算符

  • 原码
  • 反码 除符号位以外,各位取反
  • 补码 反码+1
  • 移码 对补码的符号位取反
  • 阶码 在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码,阶码指明了小数点在数据中的位置。

计算机中浮点数的表示:

IEEE754标准

摘自《计算机组成原理》

32位浮点数中,S是符号位,占1位,S=0表示正数,S=1表示负数。M是尾数,占23位。E是阶码,占8位,阶符采用隐含方式,即采用移码方法来表示正负指数。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127;

一个规格化的32位浮点数x的真值为: x = (-1)^S * (1.M) * 2^(E-127)

64位浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。

一个规格化的64位浮点数x的真值为: x = (-1)^S * (1.M) * 2^(E-1023)

其中尾数域所表示的值是1.M。由于规格化的浮点数的尾数域最左位(最高有效位)总是1,故这一位经常不予存储。于是23位字段可以存储24位有效数。

移位运算符只能操作整数。
在java中(c/c++也是)如int等存的是数据的补码形式。

“<<”左移运算,能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。

“>>”有符号的右移运算:

  1. 符号为正,则在最高位插入0
  2. 符号为负,则在最高位插入1

“>>>”无符号的右移运算:无论正负,都在最高位插入0;(c/c++中没有)

在c/c++中 true的值是1,false的值是0,if/while等的执行条件是非0,但是在java中boolean类型无法转换为int类型,if/while的条件必须是boolean类型的值。所以不会出现像if(a=1)这样的错误。

类型转换操作符

1.截尾与舍入

在java中,如果将浮点数,转换为整数,如 int a = (int)2.5; 总会截尾,只留下整数部分。若想用四舍五入的话,需要用到Math.round()方法。

发表评论

表情:
评论列表 (有 0 条评论,362人围观)

还没有评论,来说两句吧...

相关阅读

    相关 移位操作符

    移位操作符 人家总结挺好: 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对

    相关 new操作符

    1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。 2、属性和方法被加入到 this 引用的对象中。 3、新创建

    相关 操作符

    \-------------------用异或操作符实现两个整数数值的交换  int a = 1;  int b = 2;  a ^= b ^= a ^= b;//该

    相关 Java操作符

        几乎所有操作符都只能操作基本类型,例外的操作符是=、==和!=,这几个操作符能操作所有对象。另外String支持+和+=。     将一个对象引用赋值给另一个对象引用

    相关 Java 操作符

    重新再来看(总感觉第一次看)《java编程思想》的话,还是有很多的收获,比如这篇Java 操作符。 一、算术操作符 ①、Random public sta