簡體   English   中英

數組中的長度和String中的length()

[英]length in arrays and length() in String

為什么長度 ,當我們談論陣列和長度()當我們談論Java中的字符串數據字段? 手段:

int a[10] = {1,2,3,4,5,6,7,8,9,10};
String str = "foo";
int a_len = a.length;
int str_len = str.length();

為什么長度不是數組的函數,反之亦然?

簡單地說:這就是它的方式,以及它一直以來的方式。

JLS第10.7節中規定,數組具有公共最終length字段。 為了保持一致性,它本來可以被指定為一種方法 - 但它只是不是......同樣String 可以做出一個實現決定,有一個公共的最終length字段 - 但同樣,它不會那樣。

有一些不一致的東西,自1.0以來幸存下來 - 顯然這些東西在發布后真的無法改變......

String實現CharSequence ,因此在這種情況下length需要是一個方法,因為接口只能指定方法。

數組不需要實現任何接口,因此在這種情況下, length作為公共final字段實現,以避免額外的方法調用開銷。

編輯:

正如Hot Licks在下面指出的那樣, CharSequence在Java 1.4之前並不存在。 盡管CharSequence顯然不是這種設計選擇背后的原因(因為它不存在),但選擇這種設計仍然有意義,因為String可能需要在未來實現新的接口。

它被認為是變量而不是方法。 就好像你創建了一個類,然后說一個公共靜態int num,后來在一個方法中告訴num,這個全局等於某個東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM