Java字符串数组
Java String数组用于保存固定数量的String。
字符串数组在简单的Java程序中非常常见,特别是在Java和测试某些特定情况下。
甚至java main方法的参数也是字符串数组–公共静态无效值main(String [] args)。
因此,今天我们将通过示例程序研究Java字符串数组的不同方面。
Java String数组基本上是对象的数组。
声明字符串数组的方法有两种:不声明大小和声明大小。
初始化字符串数组有两种方法-在声明时,在声明后填充值。
我们可以对字符串数组进行不同类型的处理,例如迭代,排序,搜索等。
现在让我们来看一下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初始化字符串数组的不同方法。
//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
原因是数组是Objects,而Object类实现了equals()方法,如下所示。
public boolean equals(Object obj) { return (this == obj); }
第二条语句是正确的,因为当转换为String时,它们的值是相同的,并且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.theitroad.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字符串数组
我们可以使用" 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);