杰瑞科技汇

java string数组 长度

在 Java 中,数组的长度是一个固定的属性,它表示数组可以容纳多少个元素,对于 String 它的长度就是可以存放多少个 String 对象。

java string数组 长度-图1
(图片来源网络,侵删)

核心概念:如何获取和设置长度

获取长度

使用数组的 length 属性来获取其长度,这是一个只读的属性,意味着你只能获取它的值,但不能直接修改它。

语法:

数组名.length

示例代码:

public class StringArrayLength {
    public static void main(String[] args) {
        // 1. 声明并初始化一个 String 数组
        String[] fruits = new String[5]; // 创建一个长度为 5 的 String 数组
        // 2. 获取并打印数组长度
        System.out.println("数组的初始长度是: " + fruits.length); // 输出: 5
        // 3. 向数组中添加元素
        fruits[0] = "Apple";
        fruits[1] = "Banana";
        fruits[2] = "Orange";
        // 4. 数组的长度不会因为添加了元素而改变
        System.out.println("添加元素后,数组的长度仍然是: " + fruits.length); // 输出: 5
        // 5. 数组的长度是固定的,一旦创建就不能改变
        // fruits.length = 10; // 这行代码会编译错误!
    }
}

“设置”长度(实际上是创建新数组)

由于数组的长度是固定的,你无法直接“修改”一个已存在数组的长度,如果你需要一个不同长度的数组,唯一的办法是创建一个新数组,然后将旧数组中的元素复制到新数组中。

java string数组 长度-图2
(图片来源网络,侵删)

示例代码:

public class ResizeStringArray {
    public static void main(String[] args) {
        String[] oldNames = {"Alice", "Bob", "Charlie"};
        System.out.println("旧数组的长度: " + oldNames.length); // 输出: 3
        // 1. 创建一个新数组,长度为 5
        String[] newNames = new String[5];
        // 2. 使用 System.arraycopy() 方法复制旧数组到新数组
        // System.arraycopy(源数组, 源数组起始位置, 目标数组, 目标数组起始位置, 复制元素个数)
        System.arraycopy(oldNames, 0, newNames, 0, oldNames.length);
        // 3. 给新数组的剩余位置赋值
        newNames[3] = "David";
        newNames[4] = "Eve";
        // 4. newNames 就是我们想要的更长数组
        System.out.println("新数组的长度: " + newNames.length); // 输出: 5
        System.out.println("新数组的内容: " + java.util.Arrays.toString(newNames)); // 输出: [Alice, Bob, Charlie, David, Eve]
    }
}

注意:在实际开发中,如果你需要一个长度可以动态改变的数组,应该使用 ArrayList<String> 而不是原生数组。ArrayList 内部管理着一个数组,当容量不足时会自动扩容。


不同初始化方式下的长度

Java 中初始化数组有几种常见方式,它们的长度表现如下:

使用 new 关键字指定长度

这种方式创建的数组,所有元素都会被赋予默认值(对于 String,默认值是 null)。

String[] languages = new String[3]; [null, null, null]
// 数组长度: 3

直接初始化并赋值

这种方式,编译器会根据你提供的元素个数自动计算并设置数组长度。

String[] planets = {"Earth", "Mars", "Jupiter"}; [Earth, Mars, Jupiter]
// 数组长度: 3 (由编译器自动确定)

声明后初始化

先声明数组,稍后再用 new 关键字和初始值列表来初始化。

String[] cars;
// ... 其他代码 ...
cars = new String[]{"Toyota", "Honda", "Ford"}; [Toyota, Honda, Ford]
// 数组长度: 3 (由初始化列表的元素个数决定)

常见操作与注意事项

遍历数组并检查元素

获取长度最常见的用途就是遍历数组。

String[] names = {"Tom", "Jerry", "Spike"};
// 使用 for 循环
for (int i = 0; i < names.length; i++) {
    System.out.println("索引 " + i + ": " + names[i]);
}
// 使用 for-each 循环 (更推荐)
for (String name : names) {
    System.out.println("名字: " + name);
}

ArrayIndexOutOfBoundsException (数组索引越界异常)

这是初学者最常遇到的错误,当你尝试访问一个不存在的索引(索引小于 0 或大于等于 length)时,就会抛出这个异常。

String[] data = new String[2]; // 索引范围是 0 和 1
// data[0] = "A";
// data[1] = "B";
// 以下代码会抛出异常
String item = data[2]; // 错误!索引 2 超出了范围 [0, 1]

如何避免? 在通过索引访问数组元素前,始终确保索引在有效范围内。

int index = 2;
if (index >= 0 && index < data.length) {
    String item = data[index];
} else {
    System.out.println("索引 " + index + " 不存在!");
}

NullPointerException (空指针异常)

当你尝试在一个 null 的引用上调用方法或访问属性(如 .length)时,会抛出此异常。

String[] myArray = null;
// int len = myArray.length; // 错误!抛出 NullPointerException

如何避免? 在使用数组前,先检查它是否为 null

if (myArray != null) {
    System.out.println("数组长度是: " + myArray.length);
} else {
    System.out.println("数组是 null,无法获取长度。");
}

特性 描述
如何获取 使用 数组名.length 属性。
长度是否可变 ,数组一旦创建,其长度就是固定的。
如何“改变”长度 创建一个新长度的数组,然后将旧数组内容复制过去。
默认值 使用 new 创建时,String 数组的元素默认为 null
常见异常 ArrayIndexOutOfBoundsException (索引越界) 和 NullPointerException (空指针)。
替代方案 如果需要动态长度的列表,请使用 java.util.ArrayList<String>
分享:
扫描分享到社交APP
上一篇
下一篇