小编Cur*_*rds的帖子

Java - 正负零的比较

为什么Java在比较-0.0和+0.0时不一致?将数字与-0/+ 0进行比较的Java标准方法是什么?

我遇到过这个特别的bugaboo:

public class ZeroCompare {
    public static void main(String[] args) {
        if ( 0.0 == -0.0 ) {
            System.out.println("== --> same");
        } else {
            System.out.println("== --> different");
        }

        if ( new Double(0.0).equals( -0.0 ) ) {
            System.out.println("equals --> same");
        } else {
            System.out.println("equals --> different");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它打印以下内容:

== --> same
equals --> different
Run Code Online (Sandbox Code Playgroud)

我非常不喜欢这样一个事实:你如何比较这两个值会影响结果,我喜欢解释.

java floating-point comparison-operators

6
推荐指数
1
解决办法
922
查看次数

对泛型参数类型的错误转换不会在Java中引发ClassCastException

因此,我有一个比较深奥的问题。我正在尝试创建一个有点通用但类型化的属性收集系统。它依赖于似乎是错误的核心假设。该代码说明了该问题:

import java.lang.Integer;

public class Test {
    private static Object mObj = new String("This should print");

    public static void main(String[] args ) {
    String s = Test.<String>get();
    System.out.println(s);

        try {
        // actual ClassCastException reported HERE
        int i = Test.<Integer>get();
    } catch ( ClassCastException e ) {
        System.out.println("Why isn't the exception caught earlier?");
        }

        int i2 = getInt();
    }

    public static <T> T get() {
    T thing = null;
    try {
        // Expected ClassCastException here
        thing = (T)mObj;
    } catch ( …
Run Code Online (Sandbox Code Playgroud)

java generics casting

5
推荐指数
1
解决办法
615
查看次数