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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王德升 中级黑马   /  2012-7-18 22:10  /  1614 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

aprivate static void printObject(Object obj) {

                Class clazz = obj.getClass();

                if(clazz.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);

                }
               
        }

        private static void changeStringValue(Object obj) throws Exception {

                Field[] fields = obj.getClass().getFields();//getFields是什么方法?

                for(Field field : fields){

                        if(field.getType() == String.class){//这里为什么用==,而不是equals,比较字符串的是否相同不是equals吗?

                                String oldValue = (String)field.get(obj);

                                String newValue = oldValue.replace('b', 'a');

                                field.set(obj, newValue);
                        }
                }
               
        }

}


class TestArguments{

        public static void main(String[] args){

                for(String arg : args){

                        System.out.println(arg);

                }
        }
}

4 个回复

倒序浏览
这里不是字符串了,而是由字段信息反射为了字段类,是字节码。
回复 使用道具 举报
这里==好和equals的效果是一样的  而==好比较更符号面对对象的实现   标记的是该类在内存中的字节码  在内存中只有一份
回复 使用道具 举报
★╃小胖╃☆ 发表于 2012-7-18 22:43
都是大婶啊.我就思考了一下,就坐报纸了

你回答得挺好,加油吧!
回复 使用道具 举报
本帖最后由 黄锐 于 2012-7-19 13:32 编辑

1.System.out.println(Array.get(obj, i));//这打印的是什么?
这句代码, 以Array关键字里面的getLength(Object array)方法 返回static int类型,打印出此数组的第i个元素,它在此行代码上面的for循环{}里面所以利用getLength(Object array)方法打印出所有元素。

2.Field[] fields = obj.getClass().getFields();//getFields是什么方法?

帮你从API找出来了,返回包含File类对象的数组 ,就是返回for循环{}里面的System.out.println(Array.get(obj, i));打印其所有的数组元素。

3.   if(field.getType() == String.class){//这里为什么用==,而不是equals,比较字符串的是否相同不是equals吗?
这里比较的是字节码,不是字符串,字符串最明显的是要加""号。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马