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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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新对象就可 打印出数组

5 个回复

倒序浏览
怎么没人解答啊?求解答啊!!!!!!!!!!
回复 使用道具 举报
这个问题很有意思,我用代码试了试,只有基本数据类型有这个现象,看来基本数据类型数组的引用变量当作Object处理的,其他类型的当作Object[]处理
回复 使用道具 举报
a12366456 发表于 2015-7-29 11:26
这个问题很有意思,我用代码试了试,只有基本数据类型有这个现象,看来基本数据类型数组的引用变量当作Obje ...

可是 我记得视频上面好像可以打出数组值。。。
回复 使用道具 举报
黄成祚 发表于 2015-7-29 21:46
可是 我记得视频上面好像可以打出数组值。。。

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

额 非常感谢!!
哈 本来只是想标识一下打的是哪个的 。。。没想到犯了致命错误
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马