java 静态方法里传对象

[复制链接]
查看11 | 回复3 | 2011-10-21 15:40:48 | 显示全部楼层 |阅读模式
楼上在讲些什么啊……首先,楼主要分清一点,你说的对象是什么?如果是说的“test”,test这个是对某个“内存空间”的引用,其实是不占据空间的,从定义(即是Test test)的时候产生,它在程序体结束的时候就会消亡,这就是test的生命周期。而所谓的静态,并没有修改这个生命周期,而是它的程序题结束时间被改了。一个静态方法从第一次被调用一直到整个程序结束的时候,才会消亡。如果你说的是“new Test()”,就是test所引用的实例,这是个实实在在的划分出来的内存空间,它的生命周期和它的引用(test)是基本一致的。而对于某些没有引用的实例来说,比如下面的语句:Test test=new Test();test=new Test();第...
回复

使用道具 举报

千问 | 2011-10-21 15:40:48 | 显示全部楼层
要看你静态方法里的内部实现.传对象是一个地址引用的传递.一般来说是执行完方法后就不关静态方法的事了.那么这个对象是否存在内存当中就看对象自己的生命周期.但是,如果你在静态方法里做了固定引用,那就不好说了.比如,你在静态方法中创建了一个集合,传过来的对象引用你加入到了集合中,而一且也没清空集合.这样,对于那个对象来说,不管什么时候,都会至少有一个引用指向他...
回复

使用道具 举报

千问 | 2011-10-21 15:40:48 | 显示全部楼层
不会。test 传进来都是临时变量。存不存在内存中,得看你调用的时候。举个例子如果你定义了static Test test = new Test();method(test);那test是肯定存在的。而如果Test test = new Test();method(test);那么test会在函数调用完,作用域结束的时候销...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行