1樓:Ryan Chang
吃不準就做個測試......
long
start1
=System
.currentTimeMillis
();int
arrayOrg
=new
int[
1000000
];Random
rand
=new
Random
(System
.currentTimeMillis
());
for(
inti=0
;i .length;i ++)long end1 =System .currentTimeMillis ();System .out .println ((end1 -start1)+ " ms" );long start2 =System .nanoTime ();int aryCopy2 =new int[ 1000000 ];for (inti= 0;i< arrayOrg .length;i ++)long end2 =System .nanoTime ();System .out .println (end2 -start2 );long start =System .nanoTime ();int aryCopy =Arrays .copyOf (arrayOrg ,arrayOrg .length );long end= System .nanoTime ();System .out .println (end -start );如果是物件的話 long start1 =System .currentTimeMillis ();TestMyObj arrayOrg =new TestMyObj [1000000 ];Random rand =new Random (System .currentTimeMillis ()); for( inti=0 ;i .length;i ++)long end1 =System .currentTimeMillis ();System .out .println ((end1 -start1)+ " ms" );long start2 =System .currentTimeMillis ();for (intk= 0;k<10; k++) }long end2 =System .currentTimeMillis ();System .out .println ((end2 -start2)+ "ms" );long start =System .currentTimeMillis ();for (intk= 0;k<10; k++) long end= System .currentTimeMillis ();System .out .println ((end -start)+ "ms" );class TestMyObj 目測大型陣列的話,分基礎型別和複雜物件,略微有些區別,另外跟拷貝的次數也有一些關係,比如同樣的陣列拷貝多次,就算是用for迴圈,恐怕JIT還是會有優化的也許差距就沒有比直接呼叫Native慢多少。如果是物件型別的話,因為Arrays.copyOf的實現使用了泛型,在執行期涉及到型別轉換,又有一筆開銷 總的來說還是Arrays.copyOf快 2樓:羅俊俊 其實不能以偏概全,如果arraylist設定容量,如果迴圈是用的index方式,利用arraylist實現了隨機儲存介面的特點還是for快點,btw你這個問題本身就有問題,相信你是個小夥子,記住一句話世上沒有絕對的事!!! 3樓:斯巴拉西 copyOf呼叫了native方法System.arraycopy,我相信要比普通的for迴圈快一點 ArrayList內部的陣列複製也是使用System.arraycopy 顏欽能 給你舉乙個例子,你看一下可能比較能理解 for int element array1 question 為什麼用Foreach無法給陣列賦值element r.nextInt 101 1 System.out.println element 雖然可以輸出十個隨機數,但並沒有把十個隨機數賦給a... 黃美英 乙個是迭代方法介面,乙個是迭代器 類 介面。迭代方法Iterator 實現hasNext 和 next 就這倆方法,其他啥也沒了。迭代器介面iterable 負責持續返回可以實現迭代方法的乙個類,有個這個類,自然可以且必須實現迭代方法。當乙個集合想要遍歷,你是需要迭代方法呢?還是持續返回乙個... 蘇維 這兩個東西實現的原語不一樣,一種是mutex原語,一種是monitor原語,原語決定了用途,怎麼實現反而是次要的,隨時都能改。 wuxinliulei 不能完全這麼說,因為synchronized鎖在jdk1.6之後優化為偏向鎖,輕量級鎖,重量級鎖三種形態,CAS的使用是輕量級鎖,重量級鎖的實...Java中foreach為什麼不能給陣列賦值?
Java 中iterator和iterable的關係是怎樣的?有何意義?
Java中synchronized鎖和Lock鎖在CPU層的實現,或者說在JVM層的實現是否是一致的?