在java的定义变量时,出现“类名 变量名=方法名()”;为什么可以直接赋予方法名给变量呢?

实例:ContainercontentPane=getContentPane();网上找到满意的答案:如同数组对象的初始化分两种:一种是用new,一种是直接赋值初始化。其... 实例:Container contentPane=getContentPane();
网上找到满意的答案:如同数组对象的初始化分两种:一种是用new,一种是直接赋值初始化。
其他对象实例(或称引用)的初始化也分两种:用new或者直接赋值一个对象。此题中Container contentPane是声明一个Container对象(引用),名为contentPane;而getContentPane()这个方法有返回值,返回的是Container对象,假设称为A ;相当于直接用对象A赋值给contentPane进行初始化,所以无需用new
展开
 我来答
ssymmb
推荐于2018-05-07 · 超过16用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:45.4万
展开全部
Container contentPane =new Container();是开辟内存实例对象即 创建对象
Container contentPane=getContentPane();这样并不是创建对象 而是获取一个已经创建好的内存地址
就是说这句代码被执行的时候对象已经创建好了Container类型的对象
举个例子Container contentPane1 =new Container();
contenPane.setId=1;
Container contentPane2 =new Container();
contenPane.setId=1;
boolean bool = contentPane1.equals(contenPane2);
bool的值是false
虽然他们的值是相同的但他们的内存地址不同
public Container getContentPane(){
Container contentPane1 =new Container();
contentPane1 .setId=1
return contentPane1;
}
Container contentPane2 = getContentPane();
boolean bool = contentPane1.equals(contenPane2);
bool的值是true
虽然他们的值是相同的但他们的内存地址相同
所以Container contentPane=getContentPane();这句代码的意思是返回一个Container类型的对象 给contenPane对象赋值
Container contenPane = new Container();这句代码是创建Container类型对象 然后给contenPane赋值
追问
就是说getContentPane()方法本身已经包含创建了一个Contenter类实例A的过程,并且返回该类实例,使得contentPane2获得A的地址,变成是contentPane2引用A;

谢谢你的回答!!对我的帮助很大。
浩亮之我心依旧
2012-04-30
知道答主
回答量:2
采纳率:0%
帮助的人:3233
展开全部
问题可以简化为:
A a = b(); (A : 类名,a : 类A的一个对象,b:返回类型为“A类型”的方法名)
由于A类型的一个对象名可以“接收”一个返回值为A类型的函数返回值,所以上式成立。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式