零長度數組
回答
如果你有一個函數接受一個數組,並且你想給它一個沒有任何東西的數組,你傳遞一個零長度的數組。
如果您從外部源讀取數組,並且它恰好沒有任何項目,您將得到一個零長度數組。
使用這種方法意味着需要更少的空檢查 – tofarr 2011-03-23 13:14:29
沒有方法,成員或行爲的對象的目的是什麼?數組只是指向連續的內存塊的指針,所以0是有效的長度。
沒有理由不允許零長度數組和支持它們避免特殊情況下的許多事情。
例如:如果定義應編譯器傳遞給varArg
什麼方法是這樣的:
public void foo(String arg1, String... varArg);
被稱爲像這樣:
foo("bar");
而且,應該是什麼的"".toByteArray("UTF-8")
的返回值?
禁止零長度數組會使語言複雜化,同時增加很少的優勢。
它避免了必須檢查null是否前提條件是數組始終存在。
它們讓您保持API一致,同時避免空值。例如,假設你有一個方法返回一些東西。如果沒有有效的結果,你會返回一個零長度的數組。如果您不得不返回null來表示這個信號,那麼客戶端代碼將不得不以不同的方式處理這兩種情況。使用零長度數組,下列代碼仍然有效:
for (int i = 0; i < array.length; i++) {
// do something with the array entries
}
如果array.length == 0,則循環的主體永遠不會輸入。
假設你的意思是在Java中,你可以在沒有任何問題的情況下迭代零長度的數組,但是如果變量設置爲null
,你就不能這樣做。
String[] myArr = new String[0];
for (String str : myArr) {
// do something here
}
如果設置myArr
到null
相反,你會得到在這個循環中的NullPointerException
。
- 1. 零長度數組
- 2. ng-show當數組長度爲零時
- 3. std :: decay一個零長度數組
- 4. 零長度數組結構填充
- 5. jQuery中的數組長度爲零
- 6. R - 參數長度爲零
- 7. 參數的長度爲零
- 8. 如何告訴gdb我的零長度數組有多長?
- 9. KML編組產生零長度文件
- 10. 數組長度
- 11. `長度'爲零:NilClass
- 12. VBA:創建一個長度等於選擇長度的零的數組
- 13. JSON數組長度returing串長度
- 14. php mt_rand生成所有長度爲零的x長度數字
- 15. 數組長度Matlab
- 16. 數組長度 - 環
- 17. 數組長度空
- 18. 由數組長度
- 19. 從CIImage的UIImage - 數據長度爲零?
- 20. R nzchar錯誤:參數長度爲零
- 21. NSURLConnection返回零長度數據
- 22. AS3:從XML解析的對象數組保持爲零長度
- 23. 結構中的零長度數組如何有用?
- 24. 將可變長度數組初始化爲零
- 25. 爲什麼零長度數組只允許分配堆?
- 26. 可變數組成員(零長度陣列)
- 27. 觀察到數組的長度總是零
- 28. 如何創建任意長度的零填充JavaScript數組?
- 29. 結構中長度爲零的數組的目的是什麼?
- 30. C++用零和空值檢查數組的長度
注意:由於零長度數組是不可變的,所以它們對於給定類型都是相等的,例如對於'int [0]',通常可以使用一個常數零。唯一的例外是,如果你已經使用零長度數組作爲鎖,但這是不好的主意恕我直言。 – 2011-03-23 13:55:09