复习java基础----操作符----10.24

1.别名问题: 赋值符号为“=”。意思为,取“=”右边的值复制给左边。对于基本数据类型来赋值时,是直接将右边的内容复制给左边,只会修改左边的值,而对于右边的值没有影响。但是当为对象进行赋值操作时,实际是将一个“引用”从一个地方复制到另一个地方,如果赋值后修改左边值,右边的值也会修改。

从上面的代码中可以看出,当重新赋值后,t1.level和t2.level相同了,而且引用地址指向了同一个末尾6d69c,那么当我们再次修改t1.level时,也就是对重新赋值后的引用进行操作了,又因为t2同时也指向着这个地址,所以t2.level也会被修改,这个现象就是别名问题。

 

2。方法调用中的别名问题:当我们调用方法时,使用一个对象当做参数的方法,在方法中对这个对象进行了修改,实际上是对这个对象的引用进行了修改。

 

3. 一元加号与一元减号,一元减号是负数的意思,一元加号与它对应,但是唯一的作用就是将较小类型的操作数提升为int。

 

4.自动递增和递减,使用“++”和“--”时,需要注意的是“++”和“--”的位置,用专业点的话来说呢,就是”前缀式“和”后缀式“,“前缀式”会先运算再生成值,“后缀式”会先生成值,再执行运算,也就是说,前后缀代表着先运算还是后运算。

 

5.关系操作符: > <  <=   >=  ==   !=  ;对于== 和 != 试用于所有的基本数据类型,而其他比较符不适用于boolean类型,因为boolean只有true和false,>和<没有实际意义。

  == 和 != 也适用于所有对象,但是比较的是对象的引用。

因为Integer是包装类,尽管他们的值一样,但是使用“==”和“!=”时比较的是对象的引用,所以不一样。/**在这里留下一个问题,就是当类中重写了toString方法时,怎么去获取它的引用地址,对于自己定义的类来说,输出变量可以得到它的引用,输出toString也可以得到它的引用*/

这个问题被bug小哥解决掉了,因为Object.toString()方法里面的代码是这样的:

 

如果要比较对象的实际内容该怎么做呢?用equals()方法。equals()方法默认比较的是对象的引用。

对于上面代码的输出结果,按照默认来说两个应该都是false,但是,Integer重写了equals()方法

Integer.equals()方法比较它们的value值。现在,我们来给我们的Value重写equals()方法试一下。

在重写后,我们equals()方法比较的就是i值了。和Integer类似。

 

6.指数计数法 ,java中的指数计数法,e代表10的次幂,也就是说  1.01e-2代表0.0101。下面截图记录一下double和float的最大最小指数计数法。

7. 按位操作符,|(或),&(与),~(非),^(异或)

&的操作法则为:当相同位都是1则为1,否则为0;

|的操作法则为:相同位上有一个1.则为1;

~的操作法则为:取反,0为1,1为0;属于一元操作符。

^的操作法则为:相同位上只有一个1,则为1,否则为0;

 

8.位移运算符。位移运算符操作的对象是二进制的“位”。位移运算符只可用来处理整数类型。左位移操作符(<<)是按照右侧指定的位数将操作符左边的操作数向左移动,在低位补0。“有符号”右移操作符(>>)则按照指定的位数向右移动,然后在高位补0,这里,如果操作数为正,则最高位补0,为负补1。“无符号”右移操作符(>>>)无论正负都在最高位补0。

如果对于char,byte,或者short类型的数值进行位移运算,在位移之前会默认转成int类型,得到的结果也是int类型,且只有数值右端的低5位有用。如果对long类型的数据进行处理,则得到的结果是long类型,此时只会用到低6位。

下面我们通过代码来了解一下

输出结果为:

至于为什么short,byte类型的无符号右移后还是-1呢?是因为对byte,short值进行位移运算时,先转换为int类型再进行右移操作,然后被截断,赋值给原来的类型。也就是说呢,byte在进行运算后截断为8位,还是1111 1111   也还是-1,而-1的二进制  还是32位1.所以输出没有错误。对于最后一个结果来说,没有进行赋值,所以输出仍正确。

 

9.对于运算时,结果取决于表达式中的最大的数据类型。比如将一个int值和一个long值相加,得到的结果是long类型,如果double类型和float类型相加,得到的结果是double类型。

 

10. 截尾和舍入。当对float或者double类型转换为整型时,是对该数字进行结尾。如果想要摄入,则采用Math.round()方法。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值