黑马程序员技术交流社区

标题: 数组的反射 ,为什么无法正确打印? [打印本页]

作者: 黄成祚    时间: 2015-7-28 11:29
标题: 数组的反射 ,为什么无法正确打印?
public class Test5 {

        public static void main(String[] args) {
                int [] a1= new int[]{1,2,3};
                int [][] a3= new int[][]{{1,3},{2,5},{6,5}};
                String[] a4 = new String[]{"a","z","f"};
                printObject("a111"+a1);
                printObject("a333"+a3);
                printObject("a444"+a4);
                printObject("xyz");
                printObject(new int[]{1,2,3});       
        }

        private static void printObject(Object obj) {
                Class arrclass = obj.getClass();
                if(arrclass.isArray()){
                        int len = Array.getLength(obj);
                        for(int i=0;i<len;i++){
                                System.out.println(Array.get(obj,i));
                        }
                       
                }
                else{
                        System.out.println(obj);
                }
               
        }
}
把a1,a3,a4作为对象传进去,为什么得到的是 数组的哈希值
而new新对象就可 打印出数组
作者: 黄成祚    时间: 2015-7-28 23:26
怎么没人解答啊?求解答啊!!!!!!!!!!
作者: a12366456    时间: 2015-7-29 11:26
这个问题很有意思,我用代码试了试,只有基本数据类型有这个现象,看来基本数据类型数组的引用变量当作Object处理的,其他类型的当作Object[]处理
作者: 黄成祚    时间: 2015-7-29 21:46
a12366456 发表于 2015-7-29 11:26
这个问题很有意思,我用代码试了试,只有基本数据类型有这个现象,看来基本数据类型数组的引用变量当作Obje ...

可是 我记得视频上面好像可以打出数组值。。。
作者: a12366456    时间: 2015-7-29 22:10
黄成祚 发表于 2015-7-29 21:46
可是 我记得视频上面好像可以打出数组值。。。

刚回头又看了代码,发现你犯了一个十分低级的错误,printObject("a111"+a1);你往数组参数里面拼接一个字符串,Java会自动强制转为字符串,把拼接字符串去掉printObject(a1);
作者: 黄成祚    时间: 2015-7-29 22:39
a12366456 发表于 2015-7-29 22:10
刚回头又看了代码,发现你犯了一个十分低级的错误,printObject("a111"+a1);你往数组参数里面拼接一个字 ...

额 非常感谢!!
哈 本来只是想标识一下打的是哪个的 。。。没想到犯了致命错误




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