三.操作符——Java编程思想第4版学习笔记

来源:互联网 发布:js 实现数据实时更新 编辑:程序博客网 时间:2024/07/24 02:50

3.1 更简单的打印语句

3.2 使用Java操作符

3.3 优先级

3.4 赋值

对一个对象进行操作时,真正操作的是对对象的引用。所以倘若”将一个对象赋值给另一个对象“,实际上是将”引用“从一个地方复制到另一个地方。这种特殊的现象通常称作“别名现象”,是Java操作对象的一种基本方式,
3.4.1 方法调用中的别名问题
将一个对象传递给方法时,也会产生别名问题。

3.5 算术操作符

+,-,*,/,%,+=,-=,*=,/=,%=
产生随机数:
Random rand = new Random(47);j = rand.nextInt(100) + 1;

3.6 自动递增和自动递减

3.7 关系操作符

生成的是一个boolean(布尔)结果:true、false,包括<,>,<=,>=,==,!=。等于和不等于适用于所有的基本数据类型,而其他比较符不适用于boolean类型。
3.7.1 测试对象的等价性
==和!=也适用于所有对象,但是比较的是对象的引用。如果想比较两个对象的实际内容是否相同,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于“基本类型”,基本类型直接使用==和!=即可。又假设你创建了自己的类,想使用equals()方法进行比较,由于equals()的默认行为是比较引用,所以除非在自己的新类中覆盖equals()方法,否则不可能表现出我们希望的行为。
大多数Java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用。

3.8 逻辑操作符

与&&,或||,非!,能根据参数的逻辑关系,生成一个布尔值(true或false)。与在C及C++中不同的是:不可将一个非布尔值当作布尔值在逻辑表达式中使用。
3.8.1 短路

3.9 直接常量

直接常量后面的后缀字符标志了它的类型,若为大写(或小写)的L,代表long;大写(或小写)字母F,代表float;大写(或小写)字母D,代表double。
十六进制数以前缀0x,后面跟随0-9或小写(或大写)的a-f来表示;八进知数由前缀0以及后续的0~7的数字来表示。在C、C++或者Java中,二进制数没有直接常量表示方法,通过使用Interger和Long类的静态方法toBinaryString()可以很容易以二进制形式显示结果。
3.9.1 指数记数法
1.39E-43
对于语句float f4 = 1e-43f; 编译器通常会将指数作为双精度数(double)处理,所以假如没有这个尾随的f,就会收到一条出错提示,告诉我们必须使用类型转换将double转换成float。

3.10 按位操作符

用来操作整数基本数据类型中的单个“比特”,即二进制位。按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。
与(&),或(|),非(~),异或(^),&=,|=,^=

3.11 移位操作符

只可用来处理整数类型,左移位操作符(<<)将操作符左边的操作数向左移动(在低位补0),“有符号”右移位操作符(>>)将操作符左边的操作数向右移动,使用“符号扩展”:若符号为正,则在高位插入0;若符号为负,则在高位插入1。Java中增加了一种“无符号”右移位操作符(>>>),使用“零扩展”:无论正负,都在高位插入0,这一操作符是C或C++中所没有的。 与等号结合:(<<=, >>=, >>>=)
在进行“无符号”右移位结合赋值操作时,可能会遇到一个问题:如果对byte或short值进行这样的移位运算,得到的可能不是正确的结果。它们会先被转换成int类型,再进行右移操作,然后被截断,赋值给原来的类型,在这种情况下可能得到-1的结果。

3.12 三元操作符if-else

boolean-exp ? value0 : value1

3.13 字符串操作符+和+=

如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型。

3.14 使用操作符时常犯的错误

while(x = y) {
    // ....
}
以及使用按位“与”和按位“或”代替逻辑“与”和逻辑“或”。

3.15 类型转换操作符

要想执行类型转换(cast),需要将希望得到的数据类型置于圆括号内,放在要进行类型转换的值的左边。
long lng = (long) i;
3.15.1 截尾和舍入
在将float或double转型为整型值时,总是对该数字执行截尾,如果想要得到舍入的结果,就需要使用java.lang.Math中的round()方法。
3.15.2 提升

3.16 Java中没有sizeof

在C和C++中,sizeof()操作符可以告诉你为数据项分配的字节数。Java不需要sizeof()操作符来满足这方面的需求,因为所有数据类型在所有机器中的大小都是相同的。我们不必考虑移植问题——它已经被设计在语言中了。


原创粉丝点击