新的Operator和String在这个程序中做了什么?

时间:2013-02-15 16:42:09

标签: java string char

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

我的问题涉及此代码:

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));

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

4 个答案:

答案 0 :(得分:6)

JavaDoc是你的朋友:

  

public String(char [] value)

     

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

     

<强>参数:

     

value - 的初始值   串

答案 1 :(得分:2)

  

新String(copyTo)到底做了什么,

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

new String(char[] arr) Source

  

分配一个新的String,使其代表序列   当前包含在字符数组参数中的字符。该   复制字符数组的内容;随后的修改   字符数组不会影响新创建的字符串。

答案 2 :(得分: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的{​​{1}}的内部数组。

答案 3 :(得分:0)

函数println仅接受类型String。你拥有的是char数组。

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

在Android开发者网站中,您可以获得所有构造函数的列表: http://developer.android.com/reference/java/lang/String.html

具体来说,您使用的是:

String(char[] data)