Java 中 size 和 length 的区别
本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 有一个 size()
方法和一个 length
属性。初学者可能认为它们是可以互换的并执行相同的任务,因为它们听起来有些相同。在 Java 中,大小和长度是两个不同的东西。在这里,我们将了解两者之间的差异。
Java 中数组的 length
属性
数组以有序的方式存储固定数量的相同类型的数据。Java 中的所有数组都有一个长度字段,用于存储为该数组的元素分配的空间。它是一个常数值,用于找出数组的最大容量。
- 请记住,该字段不会为我们提供数组中存在的元素数,而是可以存储的最大元素数(无论元素是否存在)。
Java 数组中 .length
的示例
在下面的代码中,我们首先初始化一个长度为 7
的数组。即使我们没有添加任何元素,该数组的长度字段仍显示 7
。这个 7
只是表示最大容量。
public class Main {
public static void main(String[] args) {
int[] intArr = new int[7];
System.out.print("Length of the Array is: " + intArr.length);
}
}
输出:
Length of the Array is: 7
现在,让我们使用它们的索引将 3 个元素添加到数组中,然后打印长度字段。还是显示 7。
public class Main {
public static void main(String[] args) {
int[] intArr = new int[7];
intArr[0] = 20;
intArr[1] = 25;
intArr[2] = 30;
System.out.print("Length of the Array is: " + intArr.length);
}
}
输出:
Length of the Array is: 7
长度字段是常量,因为数组的大小是固定的。我们必须定义在初始化期间我们将存储在数组中的最大元素数(数组的容量),我们不能超过这个限制。
Java 数组中 size()
方法的示例
数组没有 size()
方法;它会返回一个编译错误。请参考下面的示例。
public class SimpleTesting {
public static void main(String[] args) {
int[] intArr = new int[7];
System.out.print("Length of the Array is: " + intArr.size());
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot invoke size() on the array type int[]
at SimpleTesting.main(SimpleTesting.java:7)
使用 Java 中的 length()
方法查找长度
Java 字符串只是字符的有序集合,与数组不同,它们具有 length()
方法而不是 length
字段。此方法返回字符串中存在的字符数。
请参考下面的示例。
public class Main {
public static void main(String[] args) {
String str1 = "This is a string";
String str2 = "Another String";
System.out.println("The String is: " + str1);
System.out.println("The length of the string is: " + str1.length());
System.out.println("\nThe String is: " + str2);
System.out.println("The length of the string is: " + str2.length());
}
}
输出:
The String is: This is a string
The length of the string is: 16
The String is: Another String
The length of the string is: 14
请注意,我们不能在字符串上使用 length
属性,并且 length()
方法不适用于数组。下面的代码显示了我们滥用它们时的错误。
public class SimpleTesting {
public static void main(String[] args) {
String str1 = "This is a string";
System.out.println("The length of the string is: " + str1.length);
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
length cannot be resolved or is not a field
at SimpleTesting.main(SimpleTesting.java:7)
同样,我们不能在数组上使用字符串 length()
方法。
public class SimpleTesting {
public static void main(String[] args) {
int[] intArray = {1, 2, 3};
System.out.println("The length of the string is: " + intArray.length());
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot invoke length() on the array type int[]
at SimpleTesting.main(SimpleTesting.java:7)
Java Collections size()
方法
size()
是 java.util.Collections
类的一个方法。Collections
类被许多不同的集合(或数据结构)使用,例如 ArrayList
、LinkedList
、HashSet
和 HashMap
。
size()
方法返回集合中当前存在的元素数。与数组的 length
属性不同,size()
方法返回的值不是常数,而是根据元素的数量而变化。
Java 中 Collection Framework
的所有集合都是动态分配的,因此元素的数量可能会有所不同。size()
方法用于跟踪元素的数量。
在下面的代码中,很明显,当我们创建一个没有任何元素的新 ArrayList
时,size()
方法返回 0。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
System.out.println("The ArrayList is: " + list);
System.out.println("The size of the ArrayList is: " + list.size());
}
}
输出:
The ArrayList is: []
The size of the ArrayList is: 0
但是这个值会随着我们添加或删除元素而改变。添加三个元素后,大小增加到 3。接下来,我们删除了两个元素,列表的大小变为 1。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
System.out.println("The ArrayList is: " + list);
System.out.println("The size of the ArrayList is: " + list.size());
list.add(20);
list.add(40);
list.add(60);
System.out.println("\nAfter adding three new elements:");
System.out.println("The ArrayList is: " + list);
System.out.println("The size of the ArrayList is: " + list.size());
list.remove(0);
list.remove(1);
System.out.println("\nAfter removing two elements:");
System.out.println("The ArrayList is: " + list);
System.out.println("The size of the ArrayList is: " + list.size());
}
}
输出:
The ArrayList is: []
The size of the ArrayList is: 0
After adding three new elements:
The ArrayList is: [20, 40, 60]
The size of the ArrayList is: 3
After removing two elements:
The ArrayList is: [40]
The size of the ArrayList is: 1
Java 中大小和长度的区别
尽管 size 和 length 有时可以在同一上下文中使用,但它们在 Java 中具有完全不同的含义。
数组的 length
字段用于表示数组的最大容量。最大容量是指可以存储在其中的最大元素数。此字段不考虑数组中存在的元素数量并保持不变。
字符串的 length()
方法用于表示字符串中出现的字符数。Collections Framework
的 size()
方法用于查看该集合中当前存在的元素数量。Collections
具有动态大小,因此 size()
的返回值可能会有所不同。
相关文章
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:96 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,
Java 中的比较字符是否相等的方法
发布时间:2023/12/17 浏览次数:126 分类:Java
-
这篇文章是关于在 Java 中使用字符 equals 方法。在 Java 中,我们可以使用 equals(==) 运算符或 Character 类的 equals() 方法来比较两个字符。
在 Java 中使用单个命令编译多个 Java 文件
发布时间:2023/12/17 浏览次数:113 分类:Java
-
本文介绍如何在 Java 中使用单个命令编译多个 java 文件。本教程介绍如何在 Java 中使用单个命令编译多个 java 文件。
Java 中的箭头运算符 ->
发布时间:2023/12/17 浏览次数:77 分类:Java
-
这篇文章就是要了解 Java 中的箭头运算符。本教程介绍了箭头运算符 (->) 在 Java 中的作用,并列出了一些示例代码来理解该主题。
Java 中的 >> 运算符
发布时间:2023/12/17 浏览次数:187 分类:Java
-
本文你将了解 Java 中的 >> 运算符。本指南将介绍 Java 中的 >> 运算符。要理解这个概念,你需要熟悉一些较低级别的计算概念。例如,位、字节等等。让我们深入了解一下。
Java Not InstanceOf
发布时间:2023/12/17 浏览次数:156 分类:Java
-
本教程演示如何在 Java 中否定 instanceof 关键字。InstanceOf 关键字检查引用变量是否包含给定的对象引用类型。它返回布尔类型,所以我们也可以否定它们。
Java 中的类字段和实例字段
发布时间:2023/11/28 浏览次数:98 分类:Java
-
在本文中,你将学习一些 Java 术语,它们是局部变量、输入参数、类字段和实例字段。我们还将讨论 Java 中实例字段的一些属性。
Java 中的类文件编辑器
发布时间:2023/11/28 浏览次数:194 分类:Java
-
本文展示了如何使用 Java 类文件来编辑类文件。在本文中,我们将讨论 Java 类文件编辑器,这是一个用 Java 创建的工具,用于编辑 Java 编译的类。我们可以在创建 Java 类后对其进行反编译并查看
Java 中的_JAVA_OPTIONS 环境变量
发布时间:2023/11/28 浏览次数:169 分类:Java
-
在本文中,我们将讨论 Java 选项和 _JAVA_OPTIONS 环境变量,它的后续 JAVA_TOOL_OPTIONS 和 JDK_JAVA_OPTIONS。