2014-10-03 41 views
1

以下哪個代碼更好,爲什麼?以下哪個代碼更好?

第一種方式:

String[] animals = "lion tiger zebra".split(" "); 
for (String animal : animals) { 
    System.out.println(animal); 
} 

方式二:

for (String animal : "lion tiger zebra".split(" ")) { 
    System.out.println(animal); 
} 

將代碼lion tiger zebra".split(" ")循環重複所有的時間或僅在第一時間執行。

+1

「優化」..認真。 [請閱讀這些引文。](http://en.wikipedia.org/wiki/Program_optimization#Quotes)。 – user2864740 2014-10-03 16:17:56

+0

無論如何,Java被迫切地評估(禁止短路運算符) - 在這種情況下,這意味着它是執行迭代的「獅子老虎斑馬」.split(「」)「的結果。 – user2864740 2014-10-03 16:19:24

+0

第一種方式更好,更具可讀性 – user902383 2014-10-03 16:27:09

回答

1

第一種方式將需要內存爲該方法的整個執行的變量,或者如果它在一個類中,然後直到類給GC。

第二種方式會在循環執行後留下GC分割字符串的內存。

回答你的問題Will the code lion tiger zebra".split(" ") be executed all the time the loop is repeated or just the first time.

將只進行一次。

1

它沒有區別。無論哪種方式,拆分操作只會執行一次。

1

這兩段代碼幾乎沒有區別。但是,第一個選項更具可讀性,但它們(除非操作過長)纔會執行幾乎相同的時間。