3.2 操作符
= == != 几乎能操作所有的对象。
3.3 优先级
先乘除后加减
3.4 赋值
左值必须是一个明确的,右值可以是任何常量,变量或表达式。必须有一个物理空间来存储右边的值
但是不能把任何东西赋给一个常数。常数不能作为左值。
如果对对象使用了 赋值,经常会更改两个对象的引用。 因为赋值操作使得两个对象的引用指向了同一个物理空间(对象)
扫描二维码关注公众号,回复:
3614821 查看本文章
后缀形式,是唯一具有 副作用的操作符。
i++
先将1与变量的值相加,将新值(11)存回变量
表达式返回旧值(10).
++I
先将1与变量的值相加,将新值(11)存回变量
表达式返回新值(11).
- 看你期待表达式的返回值是新值还是旧值;
- 在不关心(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,会执行布尔布尔代数运算
~非 ^异或