在过去的几个小时里,我一直对以下内容感到困惑。我有一个分数类,其中零分数有一个常数,如下所示:
class Fraction{
private static final Fraction ZERO = new Fraction(0,1);
public static Fraction zero(){
return ZERO;
}
[etc]
}
随后,我发现 ZERO 的值在执行过程中发生了变化,其中:
System.out.println(Fraction.zero());
Fraction half = new Fraction(1, 2);
System.out.println(Fraction.zero());
输出:
1/1
1/2
而显然产生的值应该是 0/1,更重要的是,是固定的。问题绝对不在于 Fraction 类和与之关联的 GCD 计算器的实现,因为我过去曾成功且广泛地使用过它们。
任何关于这种奇怪行为原因的想法和想法都非常感谢。