作者tkcn (say)
看板java
标题Re: [问题] 两个基础问题 (可能C用久了)
时间Tue Feb 26 00:41:41 2013
※ 引述《nosrep (真相)》之铭言:
: JAVA如何做到...
: 1. function参数, 如果希望修改基本型态的参数值时,能够改变到呼叫者的变数.
: 会用什麽方式处理?
: 例如: void get_size(int s) { s = 3; // get some size }
: 要用 Integer 物件包起来传吗..?
Integer 也没办法,因为它被设计为 immutable。
要麽自己写 mutable 版本的 Integer,
要麽就利用回传值。
: 2. C语言可以很容易将阵列的某个位置之後传给某函释处理.那JAVA要怎麽写呢..
: 例如C语言范例:
: // void process_array(char *array)
: char array[32];
: process_array(array + 12); //从array第12个位置之後开始处理.
没办法,替代方案如下
1. 自己多传个 startIndex
2. 自己复制好阵列传进去
3. 使用 String 或 List 代替 char array,
这样就有 substring() 或 subList() 可用了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.78.231
1F:推 nosrep:赞~高手, 不过第二个看起来後面两者效率都不高~只能选一 02/26 08:41
2F:→ nopeace:第一个解决方法也可以用阵列的方式传 02/26 10:31
第三个方法的效率并不会差多少,
建议看 sbrhsieh 的这篇
#1BI48HoN ,
虽然那篇所提的内容远比我这里想要说明的更多 :)
简单的说,substring() 所建立的 String 物件,
其内部的 char array 实体会与原始 String 共用,
而且因为 Immutable 的设计,你也不需要担心内容有机会被窜改。
subList 也有类似处理,回传的只是原始 List 中的一部分 "view"。
※ 编辑: tkcn 来自: 140.114.78.231 (02/26 21:55)