十分困惑,请教java中函数的传参方式。
我要在一个函数中回传2个变量,一个是String,一个是布尔型
返回值使用String,所以这个布尔型我打算用参数来回传。
我先写成这个样子
public String function_name(boolean isAllowTryAgain);
无论这个函数里面怎么变化,都不会改变isAllowTryAgain在外面的值。
后来我又改成
public String function_name(Boolean isAllowTryAgain);
注意这个是大写的Boolean,完了,查了jdk,没有发现什么可以修改Boolean的内部值的method,
怎么办?难道要自己写一个类不成?
问题点数:20、回复次数:13Top
1 楼treeroot(旗鲁特)回复于 2005-06-03 15:53:38 得分 4
它们都是不可变的!Top
2 楼seeku(青春之歌)回复于 2005-06-03 16:04:27 得分 0
你们怎么处理这种情况?是不是非要新写一个类阿?
如果Boolean作为一个类,都不能改变值,要他何用?有boolean不就可以了?Top
3 楼lzl123(每天解决三个问题)回复于 2005-06-03 16:06:53 得分 4
主类型参数都是按值传递的,对象才按引用传递。
第二种方案在方法体内修改参数的值不会有问题吧Top
4 楼treeroot(旗鲁特)回复于 2005-06-03 16:12:05 得分 4
Boolean 确实用处不大,但是我们不能把boolean 放到容器里面
String 也是不可变的,难道也没用吗,String是用的最多的Top
5 楼BCdoctor(BC博士)回复于 2005-06-03 16:32:54 得分 4
对你的问题我有个解决方案,可能不是最好的,因为我学java时间也不是很长,交流一下。
把isAllowTryAgain设为类的一个boolean参数,进入函数时,加this.isAllowTryAgain,就可以改变它的值。Top
6 楼seeku(青春之歌)回复于 2005-06-03 16:48:03 得分 0
我问了老大,老大叫我返回一个Map,也能解决问题,不过觉得使用字符串来取数值,不够严谨。Top
7 楼qybao(阿宝)回复于 2005-06-03 17:16:13 得分 0
索性返回值返回一个Object()数组,或者String()数组好了,然后在程序外再根据返回值重新对原来的布尔变量赋值Top
8 楼Tomcat4(Tom)回复于 2005-06-03 21:28:16 得分 0
方法1. 将布尔变量设为成员变量
方法2.设计一个class
class A{
String s;
boolean b
}
让你的方法返回这个类的一个实例Top
9 楼hcom(迷失在爪哇世界中)回复于 2005-06-03 21:30:21 得分 0
upTop
10 楼mandm(馒头)回复于 2005-06-03 22:01:22 得分 0
JAVA中的参数使用有这么一条规则:
任何一个函数都无法改变一个基本类型的参数(以对像作为参数则是可以改变的,因为对像的参数的传值方式类似于引用参数传值,传过去的是一个对像的引用)Top
11 楼oscaryue()回复于 2005-06-04 16:11:52 得分 0
基本型别传值,对象传引用。
Boolean作为一种外覆型别可以将其对象置入容器中,基本型别是不行的(JDK1.5以前是不行的)。
Top
12 楼oscaryue()回复于 2005-06-04 16:12:43 得分 0
看你的书写风格是C/C++转过来的吧?Top
13 楼freelarry(自由)回复于 2005-06-04 16:33:33 得分 4
private String yourString;
private boolean yourbool;
public void function_name()
{
yourString=....
yourbool=....
};
public String getYourString(){
return yourString;
//or
// return this.yourString;
}
一般来说,你的参数是对应与某个类的,你要的参数完全可以放到类的变量里面去,如果你不愿意,那你最好把你要的参数放到一个bean中,然后你的函数返回这个bean。
这说白了也就是一个变量作用域的问题,你写在函数接口里的数是不会变化的。Top




