黑马程序员技术交流社区

标题: String.valueOf()的使用问题 [打印本页]

作者: 许聪聪    时间: 2013-6-6 10:46
标题: String.valueOf()的使用问题
本帖最后由 孙百鑫 于 2013-6-22 00:38 编辑
  1. public class value0fDemo {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 int[] arr = {34,23,45,78,56};
  7.                 String s = String.valueOf(arr);
  8.                
  9.                 System.out.print(s);
  10.         }

  11. }
复制代码
String.valueOf()不是能把任意数据类型转换成字符串吗?怎么转换int[]数组后 打印的还是数组的地址值?
求解?
作者: eycrckag    时间: 2013-6-6 10:56
建议你看下java基础加强。因为你打印的是int型号的数组。int型的数组是Object类型,而不是Object[]类型。所以打印的是地制止。如果你是Integer[]打印的就不是地址值
作者: 朱志江    时间: 2013-6-6 10:58
楼主看看我的代码的注释,希望能解决楼主的问题.纯手巧,希望能仔细观看.并给一点意见
  1. public class Test1 {

  2.         /**
  3.          * @description 解释说明楼主的问题
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 int[] arr = {22,33,4,555,6,77};
  8.                 char[] arr1 = {'2','3','0','5','6','7'};
  9.                 String s = String.valueOf(arr);
  10.                 String s1 = String.valueOf(arr1);
  11.                
  12.                 /*解释:,下面的这句输出的是一个字符串类型的地址值
  13.                  * 因为String.valueOf并没有重载的String.valueOf(int[] arr)
  14.                  * 而此处用的是String.valueOf(Object obj)的重载形式
  15.                  * 所以传递的时候,会传递arr的地址值传递给s
  16.                  * 而这个s就在常量池中创建了一个地址值,s就指向了这个常量中的地址值
  17.                  */
  18.                 System.out.println(s);//输出的是[I@37748ba4
  19.                
  20.                 /*解释:下面的这句话输出的是字符串,因为String.valueOf()的重载形式有一个valueOf(char[] data)
  21.                  * 所以会将字符型数组转换成字符串.因此,输出的是字符类型
  22.                  */
  23.                 System.out.println(s1);//输出的是字符串数组
  24.                
  25.                 /*
  26.                  *经过验证 s是否是String类型,得出s确实为字符串类型,字符串的内容是字符串类型"地址值"
  27.                  */
  28.                 if (s instanceof String) {
  29.                         System.out.println("如果输出此句,那么s为一个字符串");
  30.                         System.out.println(s.toString());
  31.                 }
  32.         }
  33.         /**
  34.          * 最后说明一下,String.valueOf()的重载形式
  35.          * valueOf(boolean b)
  36.          * valueOf(char c)
  37.          * valueOf(char[] data)
  38.          * valueOf(char[] data, int offset, int count)
  39.          * valueOf(double d)
  40.          * valueOf(float f)
  41.          * valueOf(int i)
  42.          * valueOf(long l)
  43.          * valueOf(Object obj)
  44.          */
  45. }
复制代码

作者: 陈中岩    时间: 2013-6-6 11:22
希望楼主去看看API,API中有详解哦.
作者: 孙宁洋    时间: 2013-6-6 12:57
本帖最后由 孙宁洋 于 2013-6-6 12:59 编辑


还是多查查api吧

M$LY9MRM]R40E)RKR~OGQ%F.jpg (76.76 KB, 下载次数: 0)

M$LY9MRM]R40E)RKR~OGQ%F.jpg

作者: Renica    时间: 2013-6-6 13:28
自学就得常查API文档,那样才能了解更多,有自己的东西了。
作者: 孙百鑫    时间: 2013-6-22 00:38
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2