请教一个java面试题

[复制链接]
查看11 | 回复3 | 2011-3-3 08:08:11 | 显示全部楼层 |阅读模式
public class Test {
public static String s;

public static void main(String args[])
{
s="hello";
Test t=new Test();
t=null;
System.out.println(t.s);
}
}
请问输出结果是hello,而不是nopointexception?为什么?
这是面试题,不是改错哦。
我只想知道原因。。。

回复

使用道具 举报

千问 | 2011-3-3 08:08:11 | 显示全部楼层
s是静态变量…它不属于具体的某个对象而是属于Test类…所以合理的调用方法应该是Test.s…但是java中你使用对象直接引用类成员是不报错的报一个警告…如果你是用eclipse开发你使用t.s应该有条黄色的警告线…所以不管对象在不在都不影响s的…
回复

使用道具 举报

千问 | 2011-3-3 08:08:11 | 显示全部楼层
因为s是Test类的静态成员变量,不管你用Test的实例访问,还是直接访问,也无轮Test的实例是空还是非空,都可以输出s的值如果是下面这样,s不是静态变量的话public class Test { public String s; public static void main(String args[]){Test
回复

使用道具 举报

千问 | 2011-3-3 08:08:11 | 显示全部楼层
你把S的值给T了,然后执行输出,没有进行运算,你的运算语句不对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行