【发布时间】:2013-12-10 03:58:27
【问题描述】:
.size() 和 .length 有什么区别? .size() 仅适用于数组列表,.length 仅适用于数组吗?
【问题讨论】:
-
这似乎是特定于编程语言的,并且没有标签。
.size() 和 .length 有什么区别? .size() 仅适用于数组列表,.length 仅适用于数组吗?
【问题讨论】:
size() 是java.util.Collection 中指定的方法,然后被标准库中的每个数据结构继承。 length 是任何数组上的一个字段(数组是对象,你只是看不到这个类),而length() 是java.lang.String 上的一个方法,无论如何它只是char[] 上的一个薄包装器。
也许在设计上,字符串是不可变的,并且所有顶级 Collection 子类都是可变的。因此,在您看到“长度”的地方,您知道这是恒定的,而在您看到“大小”的地方,则不是。
【讨论】:
char[]?
base + offset,其中base是开始(索引0);相对而言,这也使数组更快。 ArrayList 属于链表家族,不是按顺序存储的,这就是它们“可调整大小”的原因。因此,尽管从概念上讲,链表具有“长度”,但它们并不作为“列表”存储在内存中,因此它们使用更通用的“大小”。
string[] 应该是char[]
length 是常数,用于找出数组的存储容量,而不是数组中的元素个数
例子:
int[] a = new int[5]
a.length 总是返回 5,称为数组的容量。但是
数组中元素的个数称为大小
例子:
int[] a = new int[5]
a[0] = 10
这里的大小是 1,但 a.length 仍然是 5。请注意,数组上没有实际的属性或方法称为 size,因此您不能只调用 a.size 或 a.size() 来获取值 1。
size() 方法可用于集合,length 适用于 Java 中的数组。
【讨论】:
int[] 等原始数组调用 size()。因此a.size=1 没有意义。
a.size 这样的东西。它只是不存在,因此声称它“将是” 1 是没有意义的。
.length 是一个字段,包含容量(不是当前数组包含的元素数)数组强>.
length() 是 Strings(以及其他)使用的 方法,它返回 String 中的字符数 ;对于字符串,容量和包含元素(字符)的数量具有相同的值。
size() 是由Collection 的所有成员(列表、集合、堆栈...)实现的方法。它返回集合包含的元素数量(不是容量;有些集合甚至没有定义的容量)。【讨论】:
length variable:
在 Java 中,数组(不是 java.util.Array)是语言本身的预定义类。为了找到数组的元素,设计者使用了长度变量(长度是预定义类中的字段成员)。他们必须给定 length() 本身才能在 Java 中保持一致;但没有。原因在于性能,执行长度变量比调用方法 length() 更快。这就像用 == 和 equals() 比较两个字符串。 equals() 是一个方法调用,它比执行 == 运算符花费更多时间。
size() method:
它用于查找集合类中存在的元素数量。它在 java.util.Collection 接口中定义。
【讨论】:
根据语法,我假设它是某种 C 的后代语言。根据我所见,length 用于简单的集合项,如数组,在大多数情况下它是一个属性。
size() 是一个函数,用于动态集合对象。但是,出于所有使用目的,您不会发现使用其中任何一个的结果有任何差异。在大多数实现中,size 只返回长度属性。
【讨论】:
java 标记已正确地将其识别为Java。
我打赌(未指定语言)size() 方法返回 length 属性。
但有效的for 循环应该如下所示:
for (int i = 0; i < values.length; i++) {}
【讨论】: