Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大小和长度方法之间的差异?_Java_Arrays_Arraylist - Fatal编程技术网

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年添加的。有些用户做得很糟糕