Java 为什么string.length()是一个方法,int[].length是一个属性?
为什么String.length()是一个方法,int[].length是一个属性(见下文)Java 为什么string.length()是一个方法,int[].length是一个属性?,java,arrays,string,integer,Java,Arrays,String,Integer,为什么String.length()是一个方法,int[].length是一个属性(见下文) 我不认为有什么好的理由,我认为可能有很多理由 但一个是,通过将String#length()作为属性,可以在接口中声明它(在本例中)。接口不能声明公共实例字段。我不认为有什么好的原因,我认为可能有很多原因 但一个是,通过将String#length()作为属性,可以在接口中声明它(在本例中)。接口无法声明公共实例字段。,因为字符串本身不是数组。Java的设计者将数组(即对象)设计成一个名为length的
我不认为有什么好的理由,我认为可能有很多理由
但一个是,通过将
String#length()
作为属性,可以在接口中声明它(在本例中)。接口不能声明公共实例字段。我不认为有什么好的原因,我认为可能有很多原因
但一个是,通过将
String#length()
作为属性,可以在接口中声明它(在本例中)。接口无法声明公共实例字段。,因为字符串本身不是数组。Java的设计者将数组(即对象)设计成一个名为length
的公共字段
另一方面,字符串有一个方法,该方法给出长度。一般来说,将成员字段设置为私有并使用方法访问它们是一种更为传统的方法,但在数组的情况下并非如此
就你而言,它们是具有不同特征的不同对象。
String
不是char[]
(虽然在内部它可能是这样实现的)。因为String本身不是数组。Java的设计者将数组(即对象)设计成一个名为length
的公共字段
另一方面,字符串有一个方法,该方法给出长度。一般来说,将成员字段设置为私有并使用方法访问它们是一种更为传统的方法,但在数组的情况下并非如此
就你而言,它们是具有不同特征的不同对象。
String
不是char[]
(虽然在内部它可能是这样实现的)。这就是String::length()
函数的外观:
public int length() {
return count;
}
因此本质上count
可以被称为length
,并公开为类似于数组(毕竟是final
)
这可能只是一个设计决定。我们可以推测可能有一些促成因素(其中之一可能是Mark Peters提到的
CharSequence
事件)。这就是String::length()
函数的样子:
public int length() {
return count;
}
因此本质上count
可以被称为length
,并公开为类似于数组(毕竟是final
)
这可能只是一个设计决定。我们可以推测可能有一些促成因素(其中一个可能是马克·彼得斯提到的
CharSequence
事件)。我认为没有特别的原因。事实上,在一种非常类似的语言C#中,String.length
是一个属性。但看看C#designer对这种设计的看法:
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.
我想没有什么特别的原因。事实上,在一种非常类似的语言C#中,
String.length
是一个属性。但看看C#designer对这种设计的看法:
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.
为什么选择int[]。属性的长度? 数组是java中的特殊对象,它们有一个名为length的简单属性,该属性是final 数组没有“类定义”(在任何.class文件中都找不到),它们是语言本身的一部分
为什么选择int[]。属性的长度? 数组是java中的特殊对象,它们有一个名为length的简单属性,该属性是final 数组没有“类定义”(在任何.class文件中都找不到),它们是语言本身的一部分
该“duplicate”中的Top Vote答案不是特别有用。该“duplicate”中的Top Vote答案不是特别有用。C#中的属性相当于Java中带有getter的私有字段。这里的问题是为什么Java没有简单地将
length
作为一个公共的final字段。@CyrilleKarmann我认为这是一个公共字段。看看MSDn示例Console.WriteLine(characters.Length)代码>C#中的属性相当于Java中带有getter的私有字段。这里的问题是为什么Java没有简单地将length
作为一个公共的final字段。@CyrilleKarmann我认为这是一个公共字段。看看MSDn示例Console.WriteLine(characters.Length)代码>好的观点。但是我认为jdk1.4中添加了CharSequence
。但是,String.length()
甚至在这之前就已经存在了,因此,不能确定原始设计的意图。这一点很好。但是我认为jdk1.4中添加了CharSequence
。但是,String.length()
甚至在这之前就已经存在,因此,不确定其意图