- 基本类型的赋值都是直接的,而不像对象,赋予的只是其内存的引用。
- == 和 != 比较的是对象引用。因为 Integer 内部维 护着一个 IntegerCache 的缓存,默认缓存范围是 [-128, 127],所以 [-128, 127] 之间的值 用 == 和 != 比较也能能到正确的结果,但是不推荐用关系运算符比较。正确比较使用所有对象(不包括基本类 型)中都存在的 equals() 方法。
- equals() 的默认行为是比较对 象的引用而非具体内容。大多数 Java 库类通过覆写 equals() 方法比较对象的内容而不是其引用。创建自己的类时需要重写。
- 我们可以在数字字面量中包含下划线 _,以使结 果更清晰。如
double d = 341_435_936.445_667;
-
编译器通常会将指数作为 double 类型来处理,所以定义float f4 = 1e-43f;时没有这个后缀字符 f,编译器就会报错,提示我们应该将 double 型转换成 float 型。
-
移位可以与等号 >= 或 >>>= 组合使用。左值被替换为其移位运算后的值。 但是,问题来了,当无符号右移与赋值相结合时,若将其与 byte 或 short 一起使用的 话,则结果错误。取而代之的是,它们被提升为 int 型并右移,但在重新赋值时被截断。 在这种情况下,结果为 -1。
-
与 if-else 不同的是,三元运算符是有返回结果的
-
若将数据类型进行 “向下转换”(Narrowing Conversion)的操作(将容量较大的数据类型转换成容量较 小的类型),可能会发生信息丢失的危险。此时,编译器会强迫我们进行转型,好比在 提醒我们:该操作可能危险,若你坚持让我这么做,那么对不起,请明确需要转换的类 型。对于 “向上转换”(Widening conversion),则不必进行显式的类型转换,因为较 大类型的数据肯定能容纳较小类型的数据,不会造成任何信息的丢失。
-
若你想对 结果进行四舍五入,可以使用 java.lang.Math 的 round() 方法
-
表达式中最大的数据类型是决定表达式结果的数据类型。
Java运算符
最新推荐文章于 2025-04-29 15:30:59 发布