问题如下:
public class Test
{
static int a = 5;
public static void main(String[] args)
{
Test t = new Test();
t = null;
System.out.println(t.a);
}
}
以上这段程序运行结果是:5。问题是t引用已经赋了null,t.a应该报告异常才对,为什么输出结果是5?
jdk版本:1.5_15,1.6_16运行结果一样都是:5
public class Test
{
static int a = 5;
public static void main(String[] args)
{
Test t = new Test();
t = null;
System.out.println(t.a);
}
}
以上这段程序运行结果是:5。问题是t引用已经赋了null,t.a应该报告异常才对,为什么输出结果是5?
jdk版本:1.5_15,1.6_16运行结果一样都是:5
你的t.a其实编译时用的是:Test.a楼主看一下如下写法:((Test)null).a 也是正确的。没有用,直接使用Test.a就行了。
其结果一定是5;
若输出t;结果是null;
不会出异常。
而:t.a其实编译时用的是:Test.a