java函式陣列引數的複製問題
在多執行緒解n王后問題的優化 一文中,引用的原作者程式碼有如下一行,
short[] chessTemp=chess.clone();
但是,我們知道陣列在c語言裡就是地址,是可以用來寫陣列內容的,這裡為什麼要clone呢?難道java的陣列引數的表現不同?
我把相關程式碼改寫為不利用clone,儲存為EightQueen9.java,執行結果不變,並且速度翻倍了。
D:\>java EightQueen9 解決 9皇后問題,用時:140毫秒,計算結果:352 解決 10皇后問題,用時:16毫秒,計算結果:724 解決 11皇后問題,用時:15毫秒,計算結果:2680 解決 12皇后問題,用時:63毫秒,計算結果:14200 解決 13皇后問題,用時:296毫秒,計算結果:73712 解決 14皇后問題,用時:1544毫秒,計算結果:365596 解決 15皇后問題,用時:8705毫秒,計算結果:2279184 D:\>javac EightQueen8.java D:\>java EightQueen8 解決 9皇后問題,用時:47毫秒,計算結果:352 解決 10皇后問題,用時:0毫秒,計算結果:724 解決 11皇后問題,用時:31毫秒,計算結果:2680 解決 12皇后問題,用時:125毫秒,計算結果:14200 解決 13皇后問題,用時:484毫秒,計算結果:73712 解決 14皇后問題,用時:2605毫秒,計算結果:365596 解決 15皇后問題,用時:18065毫秒,計算結果:2279184
同時發現一件有趣的事,如果2個java檔案裡有同名的實現類,比如EightQueen8.java和EightQueen9.java都有一個class EightQueenThread implements Callable,那麼後編譯的類會產生一個新的EightQueenThread.class,但先編譯的主class仍能呼叫它。比如,上面重新編譯了EightQueen8.java,此時執行EightQueen9的時間就和8一樣了,因為2個檔案的主類只有名字不同。
D:\>java EightQueen9 解決 9皇后問題,用時:0毫秒,計算結果:352 解決 10皇后問題,用時:15毫秒,計算結果:724 解決 11皇后問題,用時:31毫秒,計算結果:2680 解決 12皇后問題,用時:110毫秒,計算結果:14200 解決 13皇后問題,用時:483毫秒,計算結果:73712 解決 14皇后問題,用時:2590毫秒,計算結果:365596 解決 15皇后問題,用時:17363毫秒,計算結果:2279184
相關文章
- JS中的陣列複製問題JS陣列
- 陣列(引用型別)複製問題陣列型別
- java陣列的問題Java陣列
- 函式呼叫引數變數傳值的問題函式變數
- 陣列作為函式引數陣列函式
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- java語言複製陣列的四種方法Java陣列
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- 二級指標,二維陣列函式引數傳遞指標陣列函式
- javascript 陣列的深度複製JavaScript陣列
- C# 陣列的複製C#陣列
- 複數與複變函式選題函式
- 函式定義、函式的引數、函式的預設引數函式
- js中 函式引數的 傳值/傳引用 問題JS函式
- Python直接用字典陣列匯入到函式的非固定引數Python陣列函式
- js如何複製指定的陣列JS陣列
- [分享]javascript 陣列以及物件的深拷貝(複製陣列或複製物件)的方法JavaScript陣列物件
- PHP陣列函式的時間複雜度清單PHP陣列函式時間複雜度
- 記錄個Java/Groovy的小問題:空字串呼叫split函式返回非空陣列Java字串函式陣列
- C語言結構體及函式傳遞陣列引數示例C語言結構體函式陣列
- JS 複製陣列和物件JS陣列物件
- C#中複製陣列C#陣列
- c# 方法引數_陣列引數C#陣列
- spring呼叫帶引數的oracle函式應注意的問題SpringOracle函式
- java複製檔案時遇到的問題Java
- Java 陣列的不同定義方式和陣列長度為可變引數Java陣列
- C++ main函式命令列引數使用C++AI函式命令列
- JavaScript陣列、字串、數學函式的知識點JavaScript陣列字串函式
- 函式引數 引數定義函式型別函式型別
- JavaScript進階系列02,函式作為引數以及在陣列中的應用JavaScript函式陣列
- 陣列中重複的數字陣列
- C#陣列引數C#陣列
- javascript如何複製一個陣列JavaScript陣列
- 函式訪問引數受限的處理方法函式
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- PHP 陣列常用函式PHP陣列函式
- 陣列處理函式陣列函式
- 陣列展平函式陣列函式