Java 中的一些小问题~

假如有类A;A有个变量,Bb=newB();生成A的一个对象Aa=newA();然后a=null;那么,b是null吗;... 假如有类A;
A有个变量,B b=new B();

生成A的一个对象A a = new A();
然后a=null;
那么,b是null吗;
展开
 我来答
乁Freedom
2010-11-20 · TA获得超过2128个赞
知道小有建树答主
回答量:1580
采纳率:0%
帮助的人:1412万
展开全部
如果你了解它们在内存里的关系就会懂了
A里有个对象B
A a = new A()时,里面的b也new了,这时内存堆里有两个实例,内存栈里有两个引用分别指向堆里的两个实例,
如果你把a的引用指向了null,对于你的问题b是否会等于null,这有两种情况
一种是:实例a被一个以上的引用指向,a是其中一个,如果a指向了null,但是实例a还有其他引用指向,b不会等于null

第二种是:实例a只有一个引用指向,当你把这个引用指向null后,那么实例就没有引用指向它了,那么java的垃圾回收器就会把实例a这个销毁,当然里面的b也会销毁,但是,如果里面的实例b在外部还有其他的引用指向的话,那么b也还是会存在

这个要自己慢慢做实验来了解比较好

向你上面的程序,你把a指向null,那么你要怎么访问b?调用a.getB()不就出现NullPointerException了吗
但是你可以这样
A a = new A();
A a1 = a;
a = null;
a1.getB();你看b是不会为空的
我a我e
2010-11-20 · TA获得超过190个赞
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:126万
展开全部
你这么说的话,也有个类是B呀?
a和b分别为两个指针,这么会有关系呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
longhaiwang521
2010-11-20 · TA获得超过216个赞
知道答主
回答量:50
采纳率:0%
帮助的人:81.2万
展开全部
b不是null,因为已经new了一个实例给b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
娱哥看电影
2010-11-20 · TA获得超过103个赞
知道答主
回答量:155
采纳率:0%
帮助的人:76.2万
展开全部
刚编了个程序实验了一下。
s不等于Null

代码如下:
public class T
{

S s;
T()
{
s=new S();
}
public static void main(String[]args)
{
T t=new T();
t=null; //可以自己设置。然后运行。看s调用它中的函数
s.show();
}
}
class S
{
public void show()
{
System.out.println("NOT NULL");
}
}
希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
50499804
2010-11-20 · TA获得超过147个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:146万
展开全部
b指向的对象已经取不到了。会被垃圾回收的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
热客家路机2597
2010-11-21
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
首先我要问一句:a=null后,你要如何访问b?
如果对象A的引用只有a的话,a=null后你是访问不到b的。

当然,如果你通过其他对象A的引用,或者直接到内存上去读取b的话,你会发现b不是null。
比如下面的例子就是把a传给c来访问b的

class A{
public B b = new B();

public static void main(String[] args){
A a = new A();
A c = a;
a= null;
if(c.b != null) System.out.println("true");

}

class B{}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式