Java 大小和长度方法之间的差异?
Java 大小和长度方法之间的差异?,java,arrays,arraylist,Java,Arrays,Arraylist,.size()和.length之间有什么区别?.size()仅适用于数组列表,而.length仅适用于数组 I bet(未指定语言)size()方法返回length属性 但是循环的有效应如下所示: for (int i = 0; i < values.length; i++) {} for(inti=0;i
.size()
和.length
之间有什么区别?.size()
仅适用于数组列表,而.length
仅适用于数组 I bet(未指定语言)size()
方法返回length
属性
但是循环的有效应如下所示:
for (int i = 0; i < values.length; i++) {}
for(inti=0;i
基于语法,我假设它是C语言的后代。根据我所看到的,长度
用于简单的集合项,如数组,在大多数情况下,它是一个属性
size()
是一个函数,用于动态集合对象。然而,对于使用的所有目的,您都不会发现使用它们的结果有任何差异。在大多数实现中,size只返回length属性 size()
是在java.util.Collection
中指定的方法,然后由标准库中的每个数据结构继承length
是任何数组上的一个字段(数组是对象,通常看不到类),而length()
是java.lang.String
上的一个方法,它只是char[]
上的一个薄包装
也许在设计上,字符串是不可变的,所有顶级集合子类都是可变的。所以当你看到“长度”时,你知道它是常数,而当你看到“大小”时,它不是常数
长度是常量,用于确定数组的存储容量,而不是数组中的元素数
例如:
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中的数组
length variable:
在Java中,array(不是Java.util.array)是语言本身中预定义的类。为了查找数组的元素,设计者使用了长度变量(length是预定义类中的字段成员)。他们必须给出length()本身才能在Java中保持一致性;但是没有。原因是由于性能原因,执行length变量比调用length()方法更快。这就像用==和equals()比较两个字符串。equals()是一个比执行==运算符花费更多时间的方法调用
size() method:
它用于查找集合类中存在的元素数。它在java.util.Collection接口中定义。
.length
是一个字段,包含数组的容量(不是数组当前包含的元素数)
length()
是字符串使用的方法(除其他外),它返回字符串中的字符数;对于字符串,容量和包含元素的数量(字符)具有相同的值
size()
是一种方法,由集合的所有成员(列表、集合、堆栈等)实现。它返回集合包含的元素数(不是容量;有些集合甚至没有定义的容量)
这似乎是特定于编程语言的,并且没有标记。标准答案是:这一个也很好:“它只是字符串[]上的一个薄包装”。你是说char[]
?我知道这条线很旧,但我认为马特是对的,区别在于它们是如何存储在内存中的。数组元素按顺序存储,访问它们的方式是base+offset
,其中base
是开始(索引0);相对而言,这也使阵列速度更快。ArrayList位于链表族中,并且不是按顺序存储的,这就是为什么它们可以“调整大小”。因此,即使在概念上,链表有一个“长度”,它们也不会作为“列表”存储在内存中,因此它们使用更通用的“大小”。string[]
应该是char[]
@MattPuntam:正如你所说,还有Java;size()是java.util.Collection中指定的方法,但我没有得到定义长度的位置。在阵列中。这是我的面试问题。你能演示一下它来澄清我的想法吗?你不能为一个基本数组调用size()
,比如int[]
。因此,a.size=1
没有意义。有关这个答案的讨论,请参阅。@Chinmayjain:那不是作业;这只是说结果会是什么。@JESii即使不是作业,它仍然是错误的。根本没有a.size
这样的东西。它根本不存在,所以说它“将会”是毫无意义的。。。你的答案不适用于那个。那个标签是在我的答案后面加的,所以我不可能知道。所有其他针对java的答案都是在一年后给出的。。。即使你没有意识到这一点。所以你的答案总是不适用。无论哪种方式,它现在都没有任何用途,应该删除。您对标记的理解也不正确。根据编辑历史,它被添加到“2015年2月14日3:00”。在java
标记之前的两个(可能有三个)答案(包括一个已删除的答案)已经正确地将其标识为java。@StephenC这太荒谬了。你能看到我在2013年11月25日回答了这个问题吗?在问题添加4分钟后,没有这样的标签信息可用?你自己也说过标签是在2015年添加的。有些用户做得很糟糕