【发布时间】:2013-01-05 20:15:26
【问题描述】:
这里我有几个问题:
1)我试图从一个方法返回一个null 值,类似这样(仅当TypeCasted 进入对象时):
public static Object returns()
{
return (Object)null ;
}
并存储对象:
...main()..{
Object obj= returns();
...}
当我检查时:
if( obj.equals(obj))
抛出NullPointerException
但是,
if(null==null)
System.out.println("works");
编译并给出正确的输出。有什么原因吗?
2) 另外,当我尝试时:
public static Object returns()
{
return (Object)void ;
}
给我Syntax Error。有什么理由吗?
3) 这种行为在C/C++ 或任何其他OO 语言中会有所不同吗?
【问题讨论】:
-
因为它们是基于不同语言规则的不同语言,它们必然会表现出不同的行为。
-
this behaviour be different in C/C++ -
obj.anything当obj为空时将不起作用。.equals几乎在所有情况下都不同于==。 -
上述三种语言处理事情的方式完全不同。你应该一次问一个。
-
在 C++ 中,就像在 Java 中一样,您不能在空指针上调用成员函数(又名方法)(或以任何其他方式取消引用它),但您会得到未定义的行为而不是异常。在 C 中,没有方法等价物,但再次取消引用空指针会产生未定义的行为。在所有三种语言中,
void是一个类型名称,不是一个有效的表达式,所以它不能被强制转换为任何东西。
标签: java c++ c methods return-value