Java字符串数组

Java字符串数组用于存储固定数量的字符串。字符串数组在简单的Java程序中非常常见,特别是在初学者使用Java并测试一些特定情景的时候。甚至Java的主方法参数也是一个字符串数组 – public static void main(String[] args)。因此,今天我们将通过示例程序来了解Java字符串数组的不同方面。

  • Java String array is basically an array of objects.
  • There are two ways to declare string array – declaration without size and declare with size.
  • There are two ways to initialize string array – at the time of declaration, populating values after declaration.
  • We can do different kind of processing on string array such as iteration, sorting, searching etc.

让我们现在来看一下Java字符串数组的示例程序。

Java字符串数组的声明

在Java中,下面的代码片段展示了字符串数组声明的不同方式。

String[] strArray; //declare without size

String[] strArray1 = new String[3]; //declare with size

请注意,我们也可以将字符串数组写为String strArray[],但上面的方式是标准和推荐的方式。另外,在上面的代码中,strArray是null,而strArray1的值是[null, null, null]。

Java 字符串数组初始化

Java中的字符串数组初始化方式

让我们来看看在Java中初始化字符串数组的不同方式。

//inline initialization
String[] strArray1 = new String[] {"A","B","C"};
String[] strArray2 = {"A","B","C"}; 

//initialization after declaration
String[] strArray3 = new String[3];
strArray3[0] = "A";
strArray3[1] = "B";
strArray3[2] = "C";

所有三个字符串数组的值都是相同的。然而,如果您在它们上调用equals方法,它将返回false。

System.out.println(strArray1.equals(strArray2)); // false
System.out.println(Arrays.toString(strArray1).equals(Arrays.toString(strArray2)));// true

原因是数组是对象,而对象类实现了以下的equals()方法。

public boolean equals(Object obj) {
        return (this == obj);
    }

第二个陈述是正确的,因为当转换为字符串时,它们的值是相同的,而String类的equals()方法实现会检查值。如需详细信息,请参阅String类的API文档。

遍历Java字符串数组

我们可以使用java的for循环或者java的foreach循环来遍历字符串数组。

String[] strArray2 = {"A","B","C"}; 
for (int i = 0; i < strArray2.length; i++) {
	System.out.print(strArray2[i]);
}

for (String str : strArray2) {
	System.out.print(str);
}

在字符串数组中查找一个字符串。

我们可以使用for循环在数组中搜索字符串,下面是一个简单的示例。

package com.Olivia.stringarray;

public class JavaStringArrayExample {

	public static void main(String[] args) {
		String[] strArray = { "A", "B", "C" };
		
		boolean found = false;
		int index = 0;
		String s = "B";
		for (int i = 0; i < strArray.length; i++) {
			if(s.equals(strArray[i])) {
				index = i; found = true; break;
			}
		}
		if(found)
			System.out.println(s +" found at index "+index);
		else
			System.out.println(s +" not found in the array");
		
	}

}

请注意使用 “break” 关键字,在找到字符串后立即退出循环。

Java字符串数组排序

我们可以实现自己的排序算法,也可以使用Arrays类的排序方法。

String[] vowels = {"a","i","u","e","o"};
		
System.out.println("Before sorting "+Arrays.toString(vowels));

Arrays.sort(vowels);
		
System.out.println("After sorting "+Arrays.toString(vowels));

以上代码片段的输出将是:

Before sorting [a, i, u, e, o]
After sorting [a, e, i, o, u]

请注意,String实现了Comparable接口,因此可以进行自然排序。如果您想按其他方式排序,可以通过传递Comparator来使用Arrays.sort()重载方法。在Java中学习有关这些排序技巧,请查阅Comparable和Comparator。

将字符串转换为字符串数组。

我们可以使用split()方法将String转换为字符串数组。当您输入一个单独的字符串,并且值是用分隔符字符分隔的时候,这个方法非常有用。

String str = "a,e,i,o,u";
String[] vowels = str.split(",");
System.out.println(Arrays.toString(vowels)); //[a, e, i, o, u]

将字符串数组转换为字符串。

我们可以使用Arrays.toString()方法将String数组转换为String。请注意,数组没有实现toString()方法,所以如果你想获得它的字符串表示,就必须依赖于Arrays类,或者编写自己的自定义代码。

String[] vowels = { "a", "e", "i", "o", "u" };
System.out.println(vowels);
System.out.println(Arrays.toString(vowels));

输出将如下所示。

[Ljava.lang.String;@3d04a311
[a, e, i, o, u]

第一个输出是由于Object类的toString()方法实现如下。

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

Java中将String数组转换为List

将Java中的String数组转换为List

我们可以使用Arrays.toList()方法将字符串数组表示为列表。注意,这个列表由数组支持,任何结构上的修改都会导致java.lang.UnsupportedOperationException。

String[] vowels = { "a", "e", "i", "o", "u", "a", "o" };

List<String> vowelsList = Arrays.asList(vowels);
System.out.println("vowelsList = "+vowelsList);
//vowelsList.add("x"); //java.lang.UnsupportedOperationException

vowelsList.set(0, "x"); //allowed because no structural modification
System.out.println("vowelsList = "+vowelsList);

这就是关于Java字符串数组的全部内容。参考资料:Arrays Oracle文档

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds