谈Java的String和char数组的关系

String和char数组的转换总是虽然简单,但是容易出错;现整理出来,以帮助自己理清思路和想法——考虑到char[]数组没有单独的Java类,我们将从String类开始讲起


从String类看String和char数组的关系

继承关系

java.lang.Object
    java.lang.String

原型声明

public final class String extends Object implements Serializable, Comparable<String>, charSequence

构造方法

Stirng()
String(byte[] bytes)
String(byte[] bytes, CharSet charSet)
String(byte[] bytes, int offset, int length)
String(byte[] bytes, int offset, int length, CharSet charSet)
String(byte[] bytes, int ofset, int length, String charSetName)
String(byte[] bytes, String charSetName)
Stirng(char[] value)
String(char[] value, in offset, int count)
String(String original)
String(StringBuffer buffer)
String(StringBuilder builder)

在以上的构造方法中,我们强调String(char[] value)

它说明我们可以通过一个char数组来构造一个新的String字符串

String str = new String(new char[]{'a,', 'b', 'c'})

在Java中char数组转换为String类型的方法有二

1)String.valueOf(char[] arr)

2)new String(char[] arr)

注意,不能直接把char数组调用toString()方法来完成转换

char[] arr = new char[]{'a', 'e', 'i', 'o', 'u'};
String str = arr.toString();
System.out.println(str);    // [C@1ee0005

而要把一个String类实例转换为char数组则要(只能)调用str.toCharArray()方法(因为char数组没有所谓的构造方法,所以不能通过把String类型参数传递给char构造方法来构造一个新的char数组,但是String是一个类,所以可以)

public char[] toCharArray()

该方法返回一个新分配的字符数组,该数组的长度是此字符串的长度,其内容被初始化为包含这个字符串所表示的字符序列

String str = "aeiou";
char[] arr = str.toCharArray();

System.out.println(arr);    // aeiou
System.out.println(arr.toString()); // [C@1ee0005

你可能感兴趣的:(Java,语言)