2

我是 Java 的初学者,我正在阅读 Oracle 教程中的数组。

我的问题涉及这段代码:

class ArrayCopyDemo {
    public static void main(String[] args) {
        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
            'i', 'n', 'a', 't', 'e', 'd' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
    }
}

具体来说,

 System.out.println(new String(copyTo));

new String(copyTo) 究竟做了什么,或者更确切地说,为什么要使用 new 和 String?他们在一起做什么?(我知道他们会打印出“咖啡因”,但只是在一般意义上。

4

4 回答 4

6

JavaDoc是您的朋友:

公共字符串(字符 [] 值)

分配一个新的 String 以便它表示当前包含在字符数组参数中的字符序列。字符数组的内容被复制;随后对字符数组的修改不会影响新创建的字符串。

参数:

value - 字符串的初始值

于 2013-02-15T16:44:16.633 回答
2

new String(copyTo) 究竟做了什么,

它创建一个新的 String 对象。String 类有一个构造函数,它接受一个 char 数组,它将 char 数组转换为字符串文字。

新字符串(char[] arr) 源

分配一个新的 String 以便它表示当前包含在字符数组参数中的字符序列。字符数组的内容被复制;随后对字符数组的修改不会影响新创建的字符串。

于 2013-02-15T16:44:29.290 回答
0

它创建一个新String对象,其中包含char您作为参数传递的数组定义的文本。它只是String类中定义的另一个构造函数,看一下:

public String(char value[]) {
    this.offset = 0;
    this.count = value.length;
    this.value = StringValue.from(value); //returns a copy of the char array
                                          //by using Array.copyOf
}

除了查看JavaDoc之外,深入研究String的代码可以帮助您理解它是如何工作的。this.value是用于分配char符合 . 的 s的内部数组String

于 2013-02-15T16:45:39.037 回答
0

该函数println只接受 type String。你所拥有的是一个char数组。

new关键字表示它String是类的构造函数(String如构造新String对象)。

在 Android Developers 站点中,您有所有可能的构造函数的列表:http: //developer.android.com/reference/java/lang/String.html

具体来说,您正在使用的是:

String(char[] data)
于 2013-02-15T16:50:18.870 回答