黑马程序员技术交流社区
标题:
关于String类
[打印本页]
作者:
马浩
时间:
2012-5-14 11:08
标题:
关于String类
String类中有 个valueOf(char[] data)和copyValueOf(char[] data)方法,这两个方法有什么区别啊
作者:
—__
时间:
2012-5-14 11:28
我觉得你最大的疑问应该在char数组上吧?比如
char[] test = new char[]{'a','b','c'};
String a = String.valueOf(test);
String b = String.copyValueOf(test);
有什么区别?答案:没有任何区别!
首先你得知道,String的底层是由char[]实现的:通过一个char[]类型的value属性!早期的String构造器的实现呢,不会拷贝数组的,直接将参数的char[]数组作为String的value属性。然后
test[0] = 'A';
将导致字符串的变化。为了避免这个问题,提供了copyValueOf方法,每次都拷贝成新的字符数组来构造新的String对象。但是现在的String对象,在构造器中就通过拷贝新数组实现了,所以这两个方面在本质上已经没区别了
作者:
小小企鹅
时间:
2012-5-14 12:21
打印结果都一样:
char[] c ={'1','0'};
sop(String.copyValueOf(c)); //10
sop(String.valueOf(c)); //10
作者:
niceBoy
时间:
2012-5-14 13:52
源碼:
————copyValueOf(char[] data)
public static String copyValueOf(char data[]) {
return copyValueOf(data, 0, data.length);
}
public static String copyValueOf(char data[], int offset, int count) {
// All public String constructors now copy the data.
return new String(data, offset, count);
}
————valueOf(char[] data)
public static String valueOf(char data[]) {
return new String(data);
}
沒區別,真要說區別就是字符串構造的時候采用的構造器區別
作者:
彩虹
时间:
2012-5-19 01:08
valueOf(char[] data):返回 char 数组参数的字符串表示形式。一个新分配的字符串,它表示包含在字符数组参数中的相同字符序列。
字符数组的内容已被复制,后续修改不会影响新创建的字符串。
copyValueOf(char[] data):返回一个指定数组中表示该字符序列的 String,它包含字符数组的字符。后续修改可能会影响该字符串。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2