黑马程序员技术交流社区
标题:
谁能解释一下在String中这两个方法有什么区别啊
[打印本页]
作者:
^o(孤8o|狼i¤F
时间:
2014-4-17 22:05
标题:
谁能解释一下在String中这两个方法有什么区别啊
把字符数组转换成字符串。
static String copyValueOf(char[] chs): String s3 = String.copyValueOf(c); 返回指定数组中表示该字符序列的 String。
把字符数组转换成字符串。
//static String valueOf(char[] chs): String sss = String.valueOf(chs);
返回 char 数组参数的字符串表示形式。字符数组的内容已被复制,后续修改不会影响新创建的字符串。
作者:
月光海
时间:
2014-4-17 22:24
一个可以传数组,返回数组的字符串形式,一个只能传char类型变量,将单个字符变成字符串形式,API写的很清楚,你后面的valueof参数中不能传char类型数组
作者:
ò壞尛孩
时间:
2014-4-17 22:45
静态类型 String copyValueOf(char[] data, int offset, int count) 和 copyValueOf(char[] data)
提供将字符数组转换成字符串。
而静态类型 String valueOf(基础类型 b)其中参数也可以是(char[] data)和 (char[] data, int offset, int count) 不仅可以将基础类型数据转换成字符串,
也可以将字符数组转成字符串。
应该说valueOf 包涵了copyValueOf的功能,valueOf 重载了基础类型数据的方法!
作者:
igi9009
时间:
2014-4-17 23:42
本帖最后由 igi9009 于 2014-4-17 23:50 编辑
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对象,在构造器中就通过拷贝新数组实现了,所以这两个方面在本质上已经没区别了。而valueof使用范围更广,
boolean,char,char[] ,double,float,int,long,Object 类型的数据都能传。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2