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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面代码是为了将字符数组转成字符串。可是结果确实空的
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char[] arr={'c','d','r','g','y','h','e'};
  6.                
  7.                 String s=new String();
  8.                 s.copyValueOf(arr);
  9.                 System.out.println(s);
  10.                 System.out.println(s.length());

  11.        
  12.         }
  13. }
复制代码
运行结果只有一个

0

而下面的代码却可以成功转换成字符串,
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char[] arr={'c','d','r','g','y','h','e'};
  6.                
  7.                 String s=String.copyValueOf(arr);
  8.                 System.out.println(s);
  9.                 System.out.println(s.length());

  10.        
  11.         }
  12. }
复制代码
运行结果是
cdrgyhe
7

copyValueOf()方法作为静态方法不是类和对象都可以调用吗?为什么对象调用会失败?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
楼主,copyValueOf()方法作为静态方法不是类和对象都可以调用,对象调用没有失败
static String copyValueOf(char[] data);  这个方法返回一个String类型的对象
楼主不妨改成这样
String s=new String();
String s2 = s.copyValueOf(arr);   
String是不可变得字符串,s指向的那片空间内的内容是不能改变的,应该是新开辟一个空间放入字符数组转换成的字符串。所以要定义一个变量来存储那片空间的引用
回复 使用道具 举报
楼主,copyValueOf()方法作为静态方法不是类和对象都可以调用,对象调用没有失败
static String copyValueOf(char[] data);  这个方法返回一个String类型的对象
楼主不妨改成这样
String s=new String();
String s2 = s.copyValueOf(arr);   
String是不可变得字符串,s指向的那片空间内的内容是不能改变的,应该是新开辟一个空间放入字符数组转换成的字符串。所以要定义一个变量来存储那片空间的引用

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
何丛 发表于 2013-11-22 22:13
楼主,copyValueOf()方法作为静态方法不是类和对象都可以调用,对象调用没有失败
static String copyValueO ...

那是不是说
String s2 = s.copyValueOf(arr);   
这句代码中对象s其实对结果不产生任何影响,只要是个String对象都可以。s2的值完全是由.copyValueOf(arr);  决定的。
回复 使用道具 举报
马富林 发表于 2013-11-22 22:50
那是不是说
String s2 = s.copyValueOf(arr);   
这句代码中对象s其实对结果不产生任何影响,只要是个Str ...

是的,这是一个静态方法
回复 使用道具 举报
s在栈里面,s.copyValueOf(arr)在堆里面,操作完了,还要给s赋值,不然就是空。
回复 使用道具 举报
copyValueOf(arr)这个方法会有一个String类型返回值,楼主不拿变量来接收,当然是空了
不然你也可以直接打印 System.out.println(String.copyValueOf(arr));
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马