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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 惠晖 中级黑马   /  2012-11-22 13:04  /  2083 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 惠晖 于 2012-11-22 13:16 编辑

s="abcdef";
char[]chs=s.tocharArray();
System.out.println(chs);
如果我们打印输出可以得到 abcdef
s="zhangsan,lisi.wangwu"
String[] arr=s.split(",")           //String[] 不就是代表接收到一个字符串数组么??为什么不能直接打印出来System.out.println(arr);
得到的确是一串地址值([Ljava.lang.String;@c17164)             而上面输出却能得到abcdef  谁能具体解释解释?


评分

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

查看全部评分

6 个回复

倒序浏览
本帖最后由 张学永 于 2012-11-22 14:05 编辑

学的不多,但是我的理解是这样的。
println()这个方法是IO流中的方法,out.println()调用了PrintStream中的打印方法,
而PrintStream对打印方法是有很多重载形式的,如print(Object obj)  print(char[] s)  print(String s),
所以打印结果是什么,是由打印方法决定的,而方法是重载的,所以就有了不同的打印结果。
println()有打印char[]的方法,没有打印String[]的重载形式,所以打印String[]就相当于用的是println(Object)
      

回复 使用道具 举报
s="abcdef";
char[]chs=s.tocharArray();
s 是字符串,tocharArray()方法返回字符数组,
public char[] toCharArray()将此字符串转换为一个新的字符数组。
返回:
一个新分配的字符数组,它的长度是此字符串的长度,而且内容被初始化为包含此字符串表示的字符序列。

s="zhangsan,lisi.wangwu"
String[] arr=s.split(",")  
public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。      
返回字符串数组的对象,返回来的就是地址

回复 使用道具 举报
汗一个  解释了我也看不懂  后面的我还没看到   是不是看完基础我就能了解了?
回复 使用道具 举报
惠晖 发表于 2012-11-22 16:30
汗一个  解释了我也看不懂  后面的我还没看到   是不是看完基础我就能了解了? ...

我验证了一下
String s="abcdef";
char[]chs=s.toCharArray();
System.out.println(chs);//这里输出的是字符数组
String m="zhangsan,lisi.wangwu";
String[] arr=m.split(","); //m.split(",")以“,”为分隔符把m分为两个字符串“zhangsan”,“lisi.wangwu”,并将这两个字符串赋给了arr,这时arr[0]=="zhangsan",arr[1]=="isi.wangwu";
System.out.println(arr[0]);//这时指定输出字符串就行了
System.out.println(arr[1]);

这是个人愚见,求交流。

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 很给力!

查看全部评分

回复 使用道具 举报
秦锐 发表于 2012-11-22 17:28
我验证了一下
String s="abcdef";
char[]chs=s.toCharArray();

注解解释感觉很好理解。楼主的代码让我看了短路了
回复 使用道具 举报
王阳 中级黑马 2012-11-22 20:45:47
7#
1楼正解,因为PrintStream没有重写含有String[]参数的字符串,所以会调用含有Object参数的方法,
public void print(Object obj) {
        write(String.valueOf(obj));
    }
也就是这个方法,String.valueOf方法内是这样的
public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
所以就返回了你那个数组对象的toString方法,也就是Object对象的toString()方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马