黑马程序员技术交流社区
标题:
String.valueOf()的使用问题
[打印本页]
作者:
许聪聪
时间:
2013-6-6 10:46
标题:
String.valueOf()的使用问题
本帖最后由 孙百鑫 于 2013-6-22 00:38 编辑
public class value0fDemo {
/**
* @param args
*/
public static void main(String[] args) {
int[] arr = {34,23,45,78,56};
String s = String.valueOf(arr);
System.out.print(s);
}
}
复制代码
String.valueOf()不是能把任意数据类型转换成字符串吗?怎么转换int[]数组后 打印的还是数组的地址值?
求解?
作者:
eycrckag
时间:
2013-6-6 10:56
建议你看下java基础加强。因为你打印的是int型号的数组。int型的数组是Object类型,而不是Object[]类型。所以打印的是地制止。如果你是Integer[]打印的就不是地址值
作者:
朱志江
时间:
2013-6-6 10:58
楼主看看我的代码的注释,希望能解决楼主的问题.纯手巧,希望能仔细观看.并给一点意见
public class Test1 {
/**
* @description 解释说明楼主的问题
* @param args
*/
public static void main(String[] args) {
int[] arr = {22,33,4,555,6,77};
char[] arr1 = {'2','3','0','5','6','7'};
String s = String.valueOf(arr);
String s1 = String.valueOf(arr1);
/*解释:,下面的这句输出的是一个字符串类型的地址值
* 因为String.valueOf并没有重载的String.valueOf(int[] arr)
* 而此处用的是String.valueOf(Object obj)的重载形式
* 所以传递的时候,会传递arr的地址值传递给s
* 而这个s就在常量池中创建了一个地址值,s就指向了这个常量中的地址值
*/
System.out.println(s);//输出的是[I@37748ba4
/*解释:下面的这句话输出的是字符串,因为String.valueOf()的重载形式有一个valueOf(char[] data)
* 所以会将字符型数组转换成字符串.因此,输出的是字符类型
*/
System.out.println(s1);//输出的是字符串数组
/*
*经过验证 s是否是String类型,得出s确实为字符串类型,字符串的内容是字符串类型"地址值"
*/
if (s instanceof String) {
System.out.println("如果输出此句,那么s为一个字符串");
System.out.println(s.toString());
}
}
/**
* 最后说明一下,String.valueOf()的重载形式
* valueOf(boolean b)
* valueOf(char c)
* valueOf(char[] data)
* valueOf(char[] data, int offset, int count)
* valueOf(double d)
* valueOf(float f)
* valueOf(int i)
* valueOf(long l)
* valueOf(Object obj)
*/
}
复制代码
作者:
陈中岩
时间:
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)
下载附件
2013-6-6 12:58 上传
作者:
Renica
时间:
2013-6-6 13:28
自学就得常查API文档,那样才能了解更多,有自己的东西了。
作者:
孙百鑫
时间:
2013-6-22 00:38
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2