Java编程思想读书笔记(3)
三、操作符与控制流程
-
Java操作符。几乎所有的操作符都只能操作“基本类型”,例外的是“=”,“==”和“!=”,这些操作符能够操作所有的对象,除此之外,String类支持“+”和“+=”。
-
赋值“=”的意思是:取得右边的值(右值rvalue),把它复制给左边(左值lvalue)。
右值可以是任何常数、变量或者表达式(只要它能生成一个值就行),但左值必须是一个明确的已命名的变量,即它必须有一个物理空间。 -
对一个对象进行操作时,实际操作的是对象的引用。所以如果将一个对象赋值给另一个对象或是传递进方法里,实际上是将引用从一个地方复制到另一个地方,它们引用的实际上变为同一个对象。
-
对于前缀递增和前缀递减(如
++a
或--a
),会先执行运算a+1,再生成值a。++a
等价于a=a+1
;--a
等价于a=a-1
。
而对于后缀递减和后缀递增(如a++
或a--
),会先生成值a,再执行运算a+1。是(涉及赋值的操作符外)唯一具有“副作用”的操作符。 -
关系操作符。基本类型直接使用==和!=即可,对象可以使用
equals()
方法,自定义的类需要覆盖equals()
方法。 -
在将float或者double转型为整型值时,总是对该数字执行截尾,将小数部分“砍掉”(而不是四舍五入)。如果想要得到舍入的结果,就需要使用java.lang.Math中的round()方法:Math.round(value);
-
直接常量:
类型 | 表示方法 | 适用类型 |
---|---|---|
十六进制 | 前缀0x(0X),后跟0-9或小写(或大写)a~f | 所有整数数据类型 |
八进制 | 前缀0后跟0-7 | 所有整数数据类型 |
长整型 | 后跟l或L | long |
单精度浮点数 | 后跟f或F | float |
双精度浮点数 | 后跟d或D | double |
-
位操作:
1)如果两个输入位都是1,则按位“与(&)”操作符生成一个输出位1,否则生成一个输出位0;
2)如果两个输入位只要有一个是1,则按位“或(|)”操作符生成一个输出位1;只有在两个输入位都是0的情况下,才会生成输出位0;
3)按位“非(~)”操作符生成与输入位相反的输出位。 -
移位运算符
操作的运算对象是二进制的“位”,只可以被用来处理整数类型(如int、byte、long、short、char)。
- 左移位操作符(<<)能将操作符左边的运算对象向左移动操作符右侧指定的位数(在低位补0)。
- 右移位操作符(>>)能将操作符左边的运算对象向右移动操作符右侧指定的位数。若符号为正,则在高位插入0;若符号为负,则在高位插入1。
- 无符号右移操作符(>>>),无论正负,都在高位插入0。
-
执行窄化操作(narrowing convertion),即大容量数据类型转为小容量数据类型,需要进行显式转换;扩展转换(widening convertion),即小容量数据类型转为大容量数据类型,则不需要。
-
控制执行流程形式:
if (Boolean-expression)
statement
else
statement
//while循环
while (Boolean-expression)
statement
//do-while循环
do
statement
while (Boolean-expression);
//for循环
for (initialization ; Boolean-expression ; step )
statement
- Foreach语法:一种更加简洁的for语法用于数组和容器,且只能用于数组和容器。在只遍历时,尽量使用ForEach语法。
例如:String[] strs =new String[];
Foreach(String s: strs) {
......
}
-
return关键字有两方面的用途:一方面指定一个方法返回什么值;另一方面它会导致当前方法的退出,并返回那个值。
-
break用于强行退出循环,不执行循环中剩余的语句。而continue则停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
-
在循环语句中使用标签:“ label: ”。 可与continue和break配合使用。规则如下:
- 一般的continue会退回最内层循环的开头(顶部),并继续执行。
- 带标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环。
- 一般的break会中断并跳出当前循环。
- 带标签的break会中断并跳出标签所指的循环。
注:JAVA中需要使用标签的唯一理由就是因为有循环嵌套的存在,而且想从多层嵌套中break或continue。
- 在Math.random()的输出中包括0.0,输出值范围是[0,1)。但出现0概率极小。