首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两种不同类型空对象的比较

两种不同类型空对象的比较
EN

Stack Overflow用户
提问于 2012-09-27 08:49:27
回答 5查看 1.1K关注 0票数 6
代码语言:javascript
复制
public void m1(Integer f) {
    ...
}

public void m1(Float f) {
    ...
}

public void main() {
    m1(null); // error: the method m1(Integer) is ambiguous for the type Main
    m1((Integer) null); // success
}

考虑到上面的例子,我们可以在某些方面承认null是被输入的。那么,为什么下面的行会打印true呢?当然,o1o2都没有值(即null),但它们不是同一类型的(Integer vs Float)。我最初以为false会被打印出来。

代码语言:javascript
复制
Integer i = null;
Object o1 = (Object) i;
Float f = null;
Object o2 = (Object) f;
System.out.println(o1 == o2); // prints true

// in short:
System.out.println(((Object) ((Integer) null)) == ((Object) ((Float) null))); // prints true
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-27 08:55:04

所有null值都是非类型化的,并且是相等的。您可以将它传递给不同的引用类型,但是为了比较目的,它没有什么不同。

输入的不是null值,而是可以键入的对null的引用。

一个常见的问题是这里发生了什么

代码语言:javascript
复制
class A {
    public static void hello() { System.out.println("Hello World"); }

    public static void main(String... args) {
        A a = null;
        a.hello();
        System.out.println("a is an A is " + (a instanceof A)); // prints false.
    }
}

编译器将a的类型视为A,因此调用静态方法。但是引用的值是null和untyped。

在不引起NullPointerException的情况下,您可以使用NullPointerException执行的唯一操作是分配或传递它,而不检查它或将其与另一个引用进行比较。

顺便说一句

简而言之:编译器将根据引用的类型选择一个方法,在运行时,执行将基于引用对象的类。在运行时,null被视为任何类型或没有类型,如果您试图取消引用,则会得到一个NullPointerException。

票数 8
EN

Stack Overflow用户

发布于 2012-09-27 08:55:47

Java中的"==“检查它是否是同一个实例,而不是简单地”它们是否相等?“。Java中没有多个null实例的概念。如果将null与null进行比较,则无论类型如何,始终会收到true。

因此,不能将null作为参数传递给与具有不同参数类型的方法同名的方法,是因为这两种方法都可以在没有进一步类型上下文的情况下被调用。而不是猜测哪一个可能是,它正确地指出一个错误。

票数 1
EN

Stack Overflow用户

发布于 2012-09-27 16:20:08

请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.1

null属于"null类型“。"null类型“只有一个值-- null

空类型是每个引用类型的子类型。所以我们可以

代码语言:javascript
复制
Integer i = null;   
(Integer)null

换句话说,null是每个引用类型中的一个有效值。

(将类型看作一组值;值的类型是它所属的集合;“子类型”表示“子集”。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12617495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档