A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static String copyValueOf(char[] data)和public static String valueOf(char[] data)好像都是把字符数组转换成字符串,有什么区别呢?
  1.                 char[] chs = { '1', '2', '3', 'a', 'b', 'c', '中', '国' };
  2.                 String s1 = String.copyValueOf(chs);
  3.                 System.out.println(s1);//123abc中国
  4.                 String s2 = String.valueOf(chs);
  5.                 System.out.println(s2);//123abc中国
复制代码



评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
我觉得你最大的疑问应该在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对象,在构造器中就通过拷贝新数组实现了,所以这两个方面在本质上已经没区别了。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
我正好学到这,还一头雾水呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马