当前位置: 技术问答>java相关
Java 的疑惑
来源: 互联网 发布时间:2015-05-03
本文导语: 在使用java.awt时,我做了如下测试:首先,我定义了Frame的对象frame、Panel的对象panela、panelb和Button的对象buttona、buttonb,将buttona加入panela,将buttonb加入panelb。接着,先将panela加到frame上,后将panelb加到frame上,结果frame...
在使用java.awt时,我做了如下测试:首先,我定义了Frame的对象frame、Panel的对象panela、panelb和Button的对象buttona、buttonb,将buttona加入panela,将buttonb加入panelb。接着,先将panela加到frame上,后将panelb加到frame上,结果frame上只显示panelb内容。再将panelb加入panela,结果frame上显示空白。这是否说明add()以传地址的形式传递参数,是否也说明在Java中的函数都是如此。
但我又做了如下测试:将String的对象str作为参数传入自定义的函数chang(String str),试图改变str的内容,结果在执行chang函数后str的内容没变。
疑惑便产生了:在Java中的函数是以传地址的形式传递参数,还是以传值的形式传递参数?哪位前辈能指点迷津,多谢!
但我又做了如下测试:将String的对象str作为参数传入自定义的函数chang(String str),试图改变str的内容,结果在执行chang函数后str的内容没变。
疑惑便产生了:在Java中的函数是以传地址的形式传递参数,还是以传值的形式传递参数?哪位前辈能指点迷津,多谢!
|
1.你的frame设置了布局没有,你可以把panela放在frame的上面,而panelb放在frame的下面。而且用JFrame时add一个控件有时必需是:this.getContentPane().add(XXXX)。
2.java是传值的形式传递参数.如果想实现你这样的功能方法有:
a.只能把str定义成类成员,然后在change中改变。
b.要不就改成String change(String str)返回一个改变的str值。
2.java是传值的形式传递参数.如果想实现你这样的功能方法有:
a.只能把str定义成类成员,然后在change中改变。
b.要不就改成String change(String str)返回一个改变的str值。
|
1,你的版面设置不正确!
2,JAVA中:
如果是对象的话,则传的是栈中首地址,
——基本类型变量的话,则是值。
2,JAVA中:
如果是对象的话,则传的是栈中首地址,
——基本类型变量的话,则是值。
|
java是以传地址的形式传递参数,Frame的缺省布局管理器是BorderLayout
而且是BorderLayout.Center
你将panelb加入时它覆盖了panela。
而且是BorderLayout.Center
你将panelb加入时它覆盖了panela。