《编程思想》3.操作符

1. 几乎所有的操作符都只能操作基本类型,例外的操作符是"=","=="和”!=“,这些操作符能够操作所有的对象,除此以外,String类支持"+"和"+="。

2.当编译器观察到一个String后面紧跟一个"+",而这个"+"的后面又紧跟一个非String类型的元素时,就会尝试着将这个非String类型的元素转换为String。

3.基本类型存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到了另一个地方。例如,对基本类型使用a = b ,那么b的内容就复制给a

4.两个Integer对象,== 和 != 比较的就是对象的引用。如果想比较两个对象实际内容是否相同,必须使用所有对象都适用的特殊方法equals()。需要重写覆盖equal方法。

5.按位操作符:输入位 0 , 1              按位"与"操作符(&)   按位"或"操作符(|)   按位"异或"操作符(^)

按位"非"操作符(-)取反操作符         按位操作符与逻辑操作符相同的效果,只是它们不会中途"短路" 

6.移位操作符

操作的运算对象也是二进制的"位".,移位操作符只可用来处理整数类型(基本类型的一种)。左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(低位补0) 。有符号右移位操作符(>>)则按照操作符右侧指定的位数将操作符左边的操作数向右移动。有符号右移位操作符使用“符号扩展" : 若符号为正,则在高位插入0

如果对char,byte或者short类型的数值进行移位处理,那么在移位进行之前,它们会被转为int类型,并且得到的结果也是一个int类型的值。

7.类型转换操作符

假设我们为某浮点变量赋以一个整数值,编译器会将int自动转换成float。

窄化转换:  面临信息丢失的危险。编译器会强制我们进行类型转换,必须显式地进行类型转换

扩展转换:  不必显式地进行类型转换

截尾和舍入: 将float或double转型为整型值时,总是对该数字进行截尾。如果想要得到舍入的结果,就需要使用Math的round()方法

提升: 表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。如果将一个float值与一个double值相乘,结果就是double ,char byte short进行算术运算,都会得到一个int型结果。

如果对两个足够大的int值执行乘法运算,结果就会溢出。

猜你喜欢

转载自blog.csdn.net/weixin_42763504/article/details/82771489