CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

十分困惑,请教java中函数的传参方式。

楼主seeku(青春之歌)2005-06-03 15:45:08 在 Java / J2SE / 基础类 提问

我要在一个函数中回传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

相关问题

  • printf函数的困惑!
  • 函数指针的困惑
  • 初学函数的困惑
  • 困惑的问题:如何把函数(Procedure,Function)作为参数传递?
  • 关于Prompt()函数的困惑?(给分)
  • clock()函数使用的困惑
  • 初学者的困惑 me函数
  • 函数的返回值比较困惑
  • help me!!!!!!!!!!! ----> fscanf() 函数的困惑 <------------
  • 构造函数与析构函数的困惑?

关键词

  • 函数
  • 参数
  • isallowtryagain
  • yourstring
  • 变量
  • 值
  • 布尔
  • boolean
  • 引用
  • 返回

得分解答快速导航

  • 帖主:seeku
  • treeroot
  • lzl123
  • treeroot
  • BCdoctor
  • freelarry

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo