读书笔记 JAVA编程思想 第二章 操作符

3.2 操作符

= == != 几乎能操作所有的对象。

3.3 优先级

先乘除后加减

 

3.4 赋值

左值必须是一个明确的,右值可以是任何常量,变量或表达式。必须有一个物理空间来存储右边的值

但是不能把任何东西赋给一个常数。常数不能作为左值。

 

如果对对象使用了 赋值,经常会更改两个对象的引用。 因为赋值操作使得两个对象的引用指向了同一个物理空间(对象)

 

扫描二维码关注公众号,回复: 3614821 查看本文章

 

后缀形式,是唯一具有 副作用的操作符。

i++

先将1与变量的值相加,将新值(11)存回变量

表达式返回旧值(10).

++I

先将1与变量的值相加,将新值(11)存回变量

表达式返回新值(11).

  1. 看你期待表达式的返回值是新值还是旧值;
  2. 在不关心(don't care)表达式的返回值时,优先选用前缀++(返回新值).

如果选用后缀++, 那么表达式将返回变量的旧值,那么这一瞬间,内存将同时记录(保存)旧值和新值两个变量,其中旧值是返回后就不被使用的临时变量。但这个临时变量是不必要的,亦即“拷贝旧值的动作”以及“占用的内存”都是不必要的.  以避免不必要的拷贝和内存浪费。

3.7 关系操作符。

3.7.1 测试对象的等价性

 如果想比较所有对象的实际内容  用equals() , 但是不适用于基本类型

 

Equals 是比较引用,如果是自己建的类必须覆盖 equals 方法

3.8 逻辑操作符

不可以将非布尔值 当做布尔值在逻辑表达式中用

 

短路

前面的为ture 后面的不计算

3.9 直接常量

如果十六进制 给出超出范围的值,会自动转换成int 并且告诉我们需要对这次赋值进行窄化转型

Integer 和Long 的toBinaryString()可以实现二进制显示。较小的类型给Integer.toBinaryString 会自动转为int

 

3.10 按位操作符

如果两个基本类型都是bit,会执行布尔布尔代数运算

~非 ^异或

 

猜你喜欢

转载自www.cnblogs.com/frank-QAQ/p/9812123.html