Re: [問題] 兩個基礎問題 (可能C用久了)
※ 引述《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
推
02/26 08:41, , 1F
02/26 08:41, 1F
→
02/26 10:31, , 2F
02/26 10:31, 2F
第三個方法的效率並不會差多少,
建議看 sbrhsieh 的這篇 #1BI48HoN ,
雖然那篇所提的內容遠比我這裡想要說明的更多 :)
簡單的說,substring() 所建立的 String 物件,
其內部的 char array 實體會與原始 String 共用,
而且因為 Immutable 的設計,你也不需要擔心內容有機會被竄改。
subList 也有類似處理,回傳的只是原始 List 中的一部分 "view"。
※ 編輯: tkcn 來自: 140.114.78.231 (02/26 21:55)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):