答:除了同时重写 hashCode(),还要让 equals() 满足自反、对称、传递和一致性,并让非 null 对象与 null 比较时返回 false。参与比较的字段应符合业务上的“相同”定义;对象作为哈希键时,这些字段还应保持稳定。
答:public 表示方法可公开访问;static 表示它属于类,调用前不必先创建实例;void 表示不返回值;main 是启动器约定的方法名;String[] 表示参数是字符串数组;args 只是参数名,可以换成其他合法名字。它们共同构成 Java 21 常规程序入口的一种写法。
答:== 是运算符。用于基本类型时按语言规则比较值;用于引用类型时比较是否指向同一对象,或是否都为 null。equals() 是方法,具体语义由类定义。Object 的默认实现也比较对象身份,而 String 等类把它重写为内容比较。
答:先确定目标数值类型:整数可用 Integer.parseInt,长整数可用 Long.parseLong,小数可用 Double.parseDouble;需要包装对象时可用对应的 valueOf。Number 是抽象父类,没有一个通用的 Number.parse 方法能替你决定精度、范围和格式。
答:隐式类型转换指编译器在允许的上下文中自动完成转换,不需要程序员写强制转换符。常见例子是 int 赋给 long、算术运算中的数值提升,以及装箱、拆箱。是否允许转换取决于具体上下文,不能只按类型占用的字节数判断。
答:不是。Java 21 没有 C/C++ 那样的 sizeof 运算符,sizeof 也不在 Java 关键字列表中。Java 程序不能靠它直接计算任意对象的内存占用。
答:System 是 java.lang 包中的类;out 是它的 public static final 字段,类型为 PrintStream;println 是 PrintStream 的一组重载实例方法。整个表达式先取得标准输出流,再调用相应的打印方法,并在末尾输出行结束符。
答:显式类型转换通过 (目标类型) 表达式 请求转换。它常用于窄化数值转换和引用向下转型。强制转换不会让数据自动变得安全:数值可能截断或丢失信息,引用类型不匹配时会抛 ClassCastException。
答:Object 是 Java 类继承体系的根。除 Object 自身没有父类以外,普通类都直接或间接继承它;数组对象也属于 Object 的子类。基本类型不是类,接口的继承关系也不能简单说成“接口 extends Object”。
答:Java 有八种基本类型:byte、short、int、long、float、double、char、boolean。String、数组、包装类都属于引用类型,不在这八种之中。void 表示方法不返回值,也不算一种可存放普通数值的基本类型。