Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Java 语言与语法

120 道题目
我的收藏与复习
题干与完整题解免费阅读第 10 / 12 页

答:常用的两个接口是 Comparable 和 Comparator,分别通过 compareTo 与 compare 定义排序比较。结果小于 0、等于 0、大于 0,分别表示排在前面、按此规则相等、排在后面。比较结果为 0 不一定等同于 equals 为 true,要看具体类型与比较规则的约定。

专注学习

答:Java 标准基本类型包装类的实例是不可变值对象。把 Integer 变量从 1 改为 2,改变的是变量持有的引用,不是把原来的 Integer 对象内部改成 2。不可变也不代表两个相同数值一定指向同一个对象,更不代表使用它们的复合操作自动线程安全。

专注学习

答:创建对象时必须提供的信息、不可缺少的依赖,以及建立有效状态所需的值,适合通过带参构造器传入。构造器可以立即校验,避免对象先处于不可用状态,再等待调用者逐个设置字段。是否还需要无参入口,取决于实际用途和框架要求。

专注学习

答:嵌套类型可以把只服务于某个外部类型的实现放在附近,并控制其可见性。非静态成员内部类带有外围实例语境,能访问该实例的成员;静态嵌套类没有隐含外围实例。局部类、匿名类则适合较局部的实现,但并不意味着它们都具有完全相同的规则。

专注学习

答:不能。构造器不是会被子类继承的普通成员,因此不存在构造器重写。子类声明自己的构造器,可以通过 super 调用父类构造器,也可以在本类中使用不同参数列表重载构造器。这些都与覆盖一个继承的实例方法不同。

专注学习

答:先分清修饰的是接口本身、字段还是方法。顶层接口通常是 public 或包访问;接口中的字段隐含 public static final。普通抽象接口方法隐含 public abstract,另外还可以声明 default、static、private 方法,但这些修饰符不能任意叠加。

专注学习

答:对遵守 Object 约定的实现来说,不能。若 x.equals(y) 为 true,两者的 hashCode 必须相同;反过来,哈希值相同不保证 equals 为 true。程序当然可以写出违反约定的方法,但那属于实现错误,不应解释成 Java 正常支持的相等性行为。

专注学习
本页 10 道,共 120 道浏览其他领域