反转单向链表Java版

算法 , ,
答案 public class Node { public int value; public Node next; public Node(int value) { this.value = value; } public Node reverseList(Node head) { Node prev = null; // 用于暂存前面的节点 Node next = null; // 用于暂存后面的节点 while (head != null) { next = head.next; // 把…

Java 如何使一个类不可变?

Java
答案 我认为这是一个相当困难的问题。您需要对类进行多次修改,以实现不可变性: 将类声明为 final,使其无法被继承。 所有域都用 private 修饰,不允许直接访问。 不提供变量的 setter 方法。 所有可变域都用 final 修饰, 使它的值只能分配一次。 通过构造函数执行深克隆初始化所有域。 对 ge…

什么是菱形继承问题?

Java
答案 菱形继承问题反映了为什么在 Java 中不被允许实现多继承。 如果有两个类共同继承一个有特定方法的超类,那么该方法会被两个子类重写。 然后,如果同时继承这两个子类,那么在你调用该重写方法时,编译器不能识别你要调用哪个子类的方法。 我们把这个问题称为 菱形继承问题。上图对它作了…

Java final、finally和 finalize 之间有什么不同?

Java
答案 final 关键字用于在多个语境下定义只能分配一次的实体。 finally 代码块是用于执行重要代码 (如关闭连接、流等) 的代码块。无论是否处理异常,finally 代码块总会被执行。finally 代码块紧随 try 代码块或 catch 代码块。 这是在删除或销毁对象之前垃圾回收器总会调用的方法,该方法使得…

为什么 Java String 对象是不可变的?

Java
答案 字符串池之所以可能,就是因为字符串在 Java 中是不可变的。由此 Java 运行时环境节省了大量堆空间,因为不同的 String 变量可以引用池中的同一 String 变量。如果 String 不是不可变的, 则字符串驻留(String interning)将是不可能的,因为一旦任一变量更改所引用的String对象的值,它…

Java Object 类包含哪些方法?

Java
答案 这是一个非常常见的问题,用来确定你对基础知识的熟悉程度。以下是每个对象都具有的方法: 在 java.lang 包中,Object 类位于类层次结构的顶端。每个类都是 Object 类直接或间接的子类。你使用或编写的每个类都继承了 Object 类中的实例方法。你并不需要使用这些方法中的任何一种,但是…

Java 7 和 Java 8 有什么区别?

Java
答案 Java 7 和 Java 8有很多不同,主要有以下几个重点: lambda 表达式,Java 8 版本引入的一个新特性。lambda 表达式允许你将功能当作方法参数或将代码当作数据。lambda 表达式还能让你以更简洁的方式表示只有一个方法的接口 (称为函数式接口) 的实例。 方法引用,为已命名方法提供了易于阅…

以满分十分来评估自己——你有多擅长 Java?

Java
答案 如果你并不完全确信你自己或是你对 Java 的熟练程度,那么这会是一个非常棘手的问题。 如果有这种情况,你应该把打分调低一点。 之后,你大概会得到与你承认的水平相符的问题。 因此,假如你给自己满分,却不能回答一个有点难的问题,那将会对你不利。