`
m_tou
  • 浏览: 30168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Think in java学习笔记-第3章 控制程序流程

阅读更多

3 章控制程序流程

就象任何有感知的生物一样,程序必须能操纵自己的世界,在执行过程中作出判断与选择。

第一部分: Java 运算符

“=” == “!=” 能操作所有对象。

String 类支持 “+” “+=”

> < >= <= ,比较不适用于 boolean 类型。

其余运算符都只能操作 基本数据类型 Primitives )。

一、    赋值运算符:=

1.       赋值运算符( = ),它的意思是 取得右边的值,把它复制到左边 。右边的值可以是任何常数、变量或者表达式,只要能产生一个值就行。但左边的值必须是一个明确的、已命名的变量。也就是说,它必须有一个物理性的空间来保存右边的值。

2.       对主( Primitives )数据类型的赋值。主类型容纳了实际的值,可将一个地方的内容复制到另一个地方。例如,假设为主类型使用 “A=B” ,那么 B 处的内容就复制到 A 。若接着又修改了 A ,那么 B 根本不会受这种修改的影响。

3.       对一个对象赋值,我们真正操作的是它的句柄。所以倘若 从一个对象到另一个对象 赋值,实际就是将句柄从一个地方复制到另一个地方。这意味着假若为对象使用 “C=D” ,那么 C D 最终都会指向最初只有 D 才指向的那个对象。 Assignment.java

4.       扩展赋值运算符 :

 

    a = a>>>b

 

    a >>>= b

 

>>>=

 

    a = a>>b

 

    a >>= b

 

>>=

 

    a = a<<b

 

    a <<= b

 

<<=

 

    a = a^b

 

    a ^= b

 

^=

 

    a |= b

 

    a &= b

 

    a %= b

 

    a /= b

 

    a *= b

 

    a -= b

 

    a += b

 

用法举例

 

    a = a|b

 

|=

 

    a = a&b

 

&=

 

    a = a%b

 

%=

 

/=

 

*=

 

-=

 

+=

 

运算符

 

    a = a/b

 

    a = a*b

 

    a = a-b

 

    a = a+b

 

等效的表达式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、    算术运算符: + ,―, * / % ++ ,――

1.        整数除法会直接砍掉小数,而不是进位。

2.        前递增和前递减(如 ++A --A ),会先执行运算,再生成值。后递增和后递减(如 A++ A-- ),会先生成值,再执行运算。

例: AutoInc.java

三、    关系运算符: > < >= <= ,==, !=

1.        关系运算符生成的是一个 布尔 Boolean )结果。它们评价的是运算对象值之间的关系。若关系是真实的,关系表达式会生成 true (真);若关系不真实,则生成 false (假)。

2.        检查对象是否相等

1)        ==和 != 比较的是对象句柄。例: Equivalence.java

2)        equals() 方法。 [Usage n1.equals(n2)] 例: EqualsMethod.java

ü          不适用于 主类型

注意:可以比较封装器类型和主类型和常数。

ü          当用 equals() 方法进行比较时,对类 File String Date 及封装类( Wrapper Class )来说,是比较类型及内容而不考虑引用的是否是同一个实例;

ü          equals() 的默认行为是比较句柄。要想比较对象必须重新实现它例: EqualsMethod2.java

ü          大多数 Java 类库都实现了 equals() ,所以它实际比较的是对象的内容,而非它们的句柄。

四、    逻辑运算符: &,|,!,^,&&,||

1.        只能应用于布尔值。不可将一个非布尔值当作布尔值在逻辑表达式中使用。

2.        逻辑运算符功能

-- 逻辑非                & -- 逻辑与          |  -- 逻辑或

^  -- 逻辑异或         &&-- 短路与           || -- 短路或

3.        短路:如果一个逻辑表达式的所有部分都不必执行下去,那么潜在的性能提升将是相当可观的。

&& -- 第一个操作数为假则不判断第二个操作数

||    --    第一个操作数为真则不判断第二个操作数

例:
ShortCircuit.java

五、 按位运算符: & | ^ ~

1.        按位运算符允许我们操作一个整数主数据类型中的单个 比特 ,即二进制位。按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果 .

2.        Java 整数进制转换

ü                Java 语言二进制数采用补码形式,数正负区分标志:符号位

ü                正数进制转换

Ø          十进制 ---- 二进制:除 2 取余、除尽为止

Ø          二进制 ---- 十进制:累加求和

ü                负数进制转换

Ø          十进制 ---- 二进制:

•取绝对值

•转换为二进制

•逐位取反

•加 1

Ø          二进制 ---- 十进制

•减 1

•逐位取反

•转换为十进制正数

•乘 -1

六、    移位运算符: << >> >>>

1.        移位运算符面向的运算对象也是二进制的 。可单独用它们处理整数类型(主类型的一种)

2.        左移 <<

ü                            将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补 0

ü                            "

2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics