摘要:
final final 是一个修饰符,是 Java 编程语言中的一个关键字,可以用来修饰变量、方法、以及类。使用 final 的效果是不同的,取决于它修饰的对象类型。下面我会分别解释 final 修饰变量、方法和类时的效果。 final 修饰变量 当 final 修饰一个变量时,这个变量就变成了一个 阅读全文
摘要:
第一点: 可变和适用范围。String 对象是不可变的,而 StringBuffer 和 StringBuilder 是可变字符序列。每次对 String 的操作相当于生成一个新的 String 对象,而对 StringBuffer 和 StringBuilder 的操作是对对象本身的操作,而不会生 阅读全文
摘要:
为什么在重写 equals 方法的时候需要重写 hashCode 方法 因为有强制的规范指定需要同时重写 hashcode 与 equals 方法,许多容器类,如 HashMap、HashSet 都依赖于 hashcode 与 equals 的规定。 在Java中,equals() 和 hashCo 阅读全文
摘要:
从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法糖。内部实现在 switch 中使用字符串的 hash code。 从 Java 7 开始,Java 语言支持在 switch 语句中直接使用 String 类型的变量。之前的版本只允许在 switch 语句 阅读全文
摘要:
false,因为有些浮点数不能完全精确的表示出来。 由于浮点数在计算机中的表示通常是近似值,3 * 0.1 实际上可能不会精确等于 0.3。这是因为二进制浮点数最为常用的表示格式(IEEE 754)通常无法精确表示一些十进制数。执行 3 * 0.1 == 0.3 在 Java 中很可能会返回 fal 阅读全文
摘要:
对于 a = a + b,如果 a 和 b 是 byte、short 或 char 类型的变量,在进行算术运算的时候会首先提升为 int 类型(这称为 类型提升),然后才执行加法运算。 如果想将结果赋值回 byte、short 或 char 类型的变量,必须进行显式的类型转换,否则编译器会报错,因为 阅读全文