Why is string.length() a method, and int[].length a property?
为什么String.length()是方法,而int []。length是属性(请参见下文)?
1 2 3 4 5 |
我认为没有必要提供充分的理由,并且我认为可能有许多原因。
但一个就是通过将
这是
1 2 3 | public int length() { return count; } |
因此本质上
这可能只是设计决定。我们可能会推测出一些促成因素(其中之一可能是Mark Peters提到的
为什么要int []。length一个属性?
数组是Java中的特殊对象,它们具有一个名为length的简单属性,该属性是final。
没有数组的"类定义"(您无法在任何.class文件中找到它),它们是语言本身的一部分。
公共最终字段长度,其中包含数组的组件数。长度可以是正数或零。
公共方法克隆,它覆盖类Object中相同名称的方法,并且不引发任何检查的异常。数组类型T []的clone方法的返回类型为T []。
多维数组的克隆很浅,也就是说,它仅创建一个新数组。子数组是共享的。
所有成员都从类Object继承;不继承的对象的唯一方法是其克隆方法。
资源:JSL 10.7
为什么使用String.length()方法?
我认为没有特别的原因。实际上,在C#(一种非常相似的语言)中,
1 2 3 | The Length property returns the number of Char objects in this instance, not the number of Unicode characters. The reason is that a Unicode character might be represented by more than one Char. Use the System.Globalization.StringInfo class to work with each Unicode character instead of each Char. |
因为String不是这样的数组。 Java的设计者将数组(即对象)设计为具有名为
另一方面,字符串有一个给出长度的方法。通常,将成员字段设为私有并使用方法访问它们是一种更常规的方法,但对于数组则不是。
就您而言,它们是具有不同签名的不同对象。