黑马程序员技术交流社区

标题: 返回值的问题 [打印本页]

作者: slatop@qq.com    时间: 2013-6-10 22:44
标题: 返回值的问题
本帖最后由 slatop@qq.com 于 2013-6-13 18:03 编辑

  郁闷了。。。一个函数须要多个返回值。java里咋处理呢。。。。
       比如说,一个函数接收一个字符串,我须要返回这个字符串中的字符串中字符'a'的个数和'b'的个数。
  别告诉我说写两个函数,那须要写两个循环,执行时间减低了一倍。如果传进来的是两个非常大个的文件那不是哭了。当然这个问题可以用正则解决。我这只是举例说明而已。总知我就是想让函数返回两个值。
  
  java里没有可以对内存地址直接操作的功能,传递进函数的任何东西都是以复本的形势出现在函数内的。所以无法使用参数返回多个值。

  我只想到两种办法,但是都很水。
1.传递进来一个数组,通过数组加下标的形势把结果放进数组中,这样函数返回后数组中的值会被改变。
2.传递进来一个对象,该对象包含两个成员数据,在函数体内把结果赋给这两个成员数据,然后在调用处再从这个对象里取。

以上办法都好垃圾,大家齐思广智帮我想一下

作者: pys200603027    时间: 2013-6-10 22:51
传递一个对象挺好,就行C语言的结构体一样
作者: slatop@qq.com    时间: 2013-6-10 22:54
pys200603027 发表于 2013-6-10 22:51
传递一个对象挺好,就行C语言的结构体一样

太不好了。仅仅为了拿两个值,就要弄出个对象来,杀鸡用了牛刀。C中传结构体是为了填充这个结构体以备之后使用的,才会这么做的。在C中传两个指针参数或引用参数进来就解决了。java中没指针,引用传进来也是复本
作者: pys200603027    时间: 2013-6-10 23:06
java有垃圾回收机制,用完就释放呀
作者: slatop@qq.com    时间: 2013-6-10 23:38
pys200603027 发表于 2013-6-10 23:06
java有垃圾回收机制,用完就释放呀

垃圾收回仅仅是免去了手动写内存释放的代码,何况释放也要等到对应的引用超出作用域,何况超出作用域后回收线程也不一定马上就会收,就算这一切都说的过去,那也不能因为内存可以回收就把内存使用造啊。
为了两个参数,最多也就几个字节的功能,要去建立一个几十个字节的对象。一个不明显,10个呢,100个呢,1000个呢。实际开发中什么情况都有可能发生。最危险的内存浪费行为就是把几个字节不当回事的行为,你没听说过别把豆包不当干粮的事吗,哈哈
作者: j816326    时间: 2013-6-10 23:49
不太懂得你要表达的意思,一个方法的返回值只能有一个吧。
作者: 张承富    时间: 2013-6-13 17:28
返回值只有一个,你只能封装成对象等,一般用map比较好吧?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2