看板 java 關於我們 聯絡資訊
※ 引述《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
nosrep:讚~高手, 不過第二個看起來後面兩者效率都不高~只能選一 02/26 08:41
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)