Think in java学习笔记-第3章 控制程序流程1
来源:互联网 发布:淘宝充话费开店 编辑:程序博客网 时间:2024/04/24 14:44
第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)
ü "a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0;
3. 带符号右移>>
ü 将运算符左边的运算对象向右移动运算符右侧指定的位数。
ü "a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位;
ü “有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。
4. 无符号右移>>>
ü 它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。
ü "a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0。
5. 移位运算符性质
ü 适用数据类型:byte、short、char、int、long,对低于int型的操作数将先自动转换为int型再移位
ü 对于int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数
ü 对于long型整数移位时a>>b ,则是先将移位位数b对64取模
ü 在进行“无符号”右移位时,也可能遇到一个问题。若对byte或short值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况下会得到-1的结果。
七、三元if-else运算符:布尔表达式 ? 值0:值1
1. 若“布尔表达式”的结果为true,就计算“值0”,而且它的结果成为最终由运算符产生的值。但若“布尔表达式”的结果为false,计算的就是“值1”,而且它的结果成为最终由运算符产生的值。
八、 逗号运算符
在Java里需要用到逗号的唯一场所就是for循环
九、字串运算符+
1. "+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接
2. 注意:对于Java的早期版本,如果想通过“加号”连接字串,请务必保证第一个元素是字串。
十、 造型运算符
十一、
十二、
- Think in java学习笔记-第3章 控制程序流程1
- thinking in java 第3章 控制程序流程
- Thinking in Java 第3章 控制程序流程 总结
- JAVA之第3章 控制程序流程
- JAVA之第3章 控制程序流程
- JAVA之第3章 控制程序流程
- Think in java学习笔记-第6章 Composition
- Think in java学习笔记-第6章 Inheritance
- Think in java学习笔记-第7章 Polymorphism
- Think in java学习笔记-第8章 Inner Classes
- Think in java学习笔记-第8章 Interfaces
- Think in java学习笔记-第9章 Exceptions
- 第3章 控制程序流程(1)
- Thinking in Java 笔记(第三章 控制程序流程)
- 《Thinking in Java》学习笔记——第三章:控制程序流程
- thinking in java 笔记之控制程序流程
- 第3章:控制程序流程
- Think in java 笔记二(第3~4章)
- 代替windows运行的工具
- 看便宜房,只能往通州跑了
- 漂亮的脚本日历
- Think in java学习笔记-第4章 初始化和清除
- DIV_圆边圆角的实现
- Think in java学习笔记-第3章 控制程序流程1
- 跳动的下拉菜单
- 客户端静态页面玩分页
- Think in java学习笔记-第8章 Inner Classes
- 漂亮的表格
- Think in java学习笔记-第8章 Interfaces
- 经典的带阴影的可拖动的浮动层
- 如何将 Office 应用程序配置为在交互式用户帐户下运行
- Think in java学习笔记-第9章 Exceptions