尺寸和长度方法之间的区别?

Posted

技术标签:

【中文标题】尺寸和长度方法之间的区别?【英文标题】:Difference between size and length methods? 【发布时间】:2013-12-10 03:58:27 【问题描述】:

.size().length 有什么区别? .size() 仅适用于数组列表,.length 仅适用于数组吗?

【问题讨论】:

这似乎是特定于编程语言的,并且没有标签。 规范答案:***.com/questions/300522/…这个也不错:***.com/questions/1965500/length-and-length-in-java 【参考方案1】:

size()java.util.Collection 中指定的方法,然后被标准库中的每个数据结构继承。 length 是任何数组上的一个字段(数组是对象,你只是看不到这个类),而length()java.lang.String 上的一个方法,无论如何它只是char[] 上的一个薄包装器。

也许在设计上,字符串是不可变的,并且所有*** Collection 子类都是可变的。因此,在您看到“长度”的地方,您知道这是恒定的,而在您看到“大小”的地方,则不是。

【讨论】:

“这只是 String[] 上的一个薄包装器”。你的意思是char[] 我知道这个线程已经过时了,但我认为 Matt 是对的,不同之处在于它们在内存中的存储方式。数组元素是按顺序存储的,访问它们的方式是base + offset,其中base是开始(索引0);相对而言,这也使数组更快。 ArrayList 属于链表家族,不是按顺序存储的,这就是它们“可调整大小”的原因。因此,尽管从概念上讲,链表具有“长度”,但它们并不作为“列表”存储在内存中,因此它们使用更通用的“大小”。 string[] 应该是char[] @MattPuntam:正如你所说,Java 也是; size() 是 java.util.Collection 中指定的方法, 但我没有得到定义长度的位置。在数组中。这是我的面试问题。你能证明它来澄清我的问题吗?【参考方案2】:

length 是常数,用于找出数组的存储容量,而不是数组中的元素个数

例子:

int[] a = new int[5]

a.length 总是返回 5,称为数组的容量。但是

数组中元素的个数称为大小

例子:

int[] a = new int[5]
a[0] = 10

这里的大小是 1,但 a.length 仍然是 5。请注意,数组上没有实际的属性或方法称为 size,因此您不能只调用 a.sizea.size() 来获取值 1。

size() 方法可用于集合,length 适用于 Java 中的数组。

【讨论】:

您不能为 int[] 等原始数组调用 size()。因此a.size=1 没有意义。 请参阅***.com/questions/46073467/java-array-attribute-size 了解有关此答案的讨论。 @Chinmayjain:那不是任务;那只是说结果会是什么。 @JESii 即使不是赋值,也仍然错。根本没有a.size 这样的东西。它只是不存在,因此声称它“将是” 1 是没有意义的。【参考方案3】:

.length 是一个字段,包含容量(不是当前数组包含的元素数)数组强>.

length()Strings(以及其他)使用的 方法,它返回 String 中的字符数 ;对于字符串,容量和包含元素(字符)的数量具有相同的值。

size() 是由Collection 的所有成员(列表、集合、堆栈...)实现的方法。它返回集合包含的元素数量(不是容量;有些集合甚至没有定义的容量)。

【讨论】:

【参考方案4】:
length variable:

在 Java 中,数组(不是 java.util.Array)是语言本身的预定义类。为了找到数组的元素,设计者使用了长度变量(长度是预定义类中的字段成员)。他们必须给定 length() 本身才能在 Java 中保持一致;但没有。原因在于性能,执行长度变量比调用方法 length() 更快。这就像用 == 和 equals() 比较两个字符串。 equals() 是一个方法调用,它比执行 == 运算符花费更多时间。

size() method:

它用于查找集合类中存在的元素数量。它在 java.util.Collection 接口中定义。

【讨论】:

【参考方案5】:

根据语法,我假设它是某种 C 的后代语言。根据我所见,length 用于简单的集合项,如数组,在大多数情况下它是一个属性。

size() 是一个函数,用于动态集合对象。但是,出于所有使用目的,您不会发现使用其中任何一个的结果有任何差异。在大多数实现中,size 只返回长度属性。

【讨论】:

语言是Java ...您的答案不适用于那个。 那个标签是在我回答之后添加的,所以我不知道。针对java的所有其他答案都是在问题一年后给出的。 问题中的源代码一直是Java ......即使你不认识它也是如此。所以你的答案一直不适用。无论哪种方式,它现在都没有用,应该被删除。 您也对标记不正确。根据编辑历史,它是在“2015 年 2 月 14 日 3:00”添加的。除了您的答案(包括一个已删除的答案)之外,有两个(可能是三个)答案早于java 标记已正确地将其识别为Java。 @StephenC 这越来越荒谬了。你能看到我在 2013 11 月 25 日回答了这个问题,在添加问题 4 分钟后,当没有这样的标签信息可用时?你自己告诉过这个标签是在 2015 年添加的。一些用户确实假设编程语言并给出答案。我只是给出了我认为足够通用的解释,以便尽我所能帮助候选人。我看到你为社区提供了很多帮助。所以,我尊重你。但我宁愿通过回答来帮助其他人,也不愿与你争论以提升我对非问题的自我意识。【参考方案6】:

我打赌(未指定语言)size() 方法返回 length 属性。

但有效的for 循环应该如下所示:

for (int i = 0; i < values.length; i++) 

【讨论】:

以上是关于尺寸和长度方法之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

CSS中px和em属性的特点与区别

创建新数组和清除长度之间的区别[重复]

CSS3中的rem,em与px间的换算关系

px,em,rem的区别

像素尺寸是啥意思

px,em, rem的区别,在项目中怎么使用rem.