Java 在向函数传递参数时使用按值调用。要交换对象,我们需要使用它们的包装器。请参见下面的示例 - 示例 在线演示public class Tester{ public static void main(String[] args) { A a = new A(); A b = new A(); a.value = 1; b.value = 2; // 使用对象交换 swap(a, b); System.out.println(a.value +", " + b.value); Wrapper wA = new Wrapper(a); Wrapper wB = new ... 阅读更多
单例模式规定一个类只能有一个实例,不允许创建多个实例。为此,我们将类的构造函数设为私有,并通过静态方法返回一个实例。但是使用克隆,我们仍然可以创建类的多个实例。请参见下面的示例 - 示例 - 破坏单例public class Tester{ public static void main(String[] args) throws CloneNotSupportedException { A a = A.getInstance(); A b = (A)a.clone(); System.out.println(a.hashCode()); System.out.println(b.hashCode()); } } ... 阅读更多
如果一个对象不再被活动引用引用,那么它就符合垃圾回收的条件。请参见下面的示例 - 示例public class Tester{ public static void main(String[] args) { test(); } public static void test(){ A a = new A(); } } class A {}当 test() 方法执行完毕后,a 对象不再被引用,并且符合垃圾回收的条件。Java 垃圾收集器将在运行时释放该对象。要防止垃圾回收,我们可以创建一个对象的静态引用,然后 ... 阅读更多