黑马程序员技术交流社区

标题: replace替换的问题 [打印本页]

作者: 张飞年    时间: 2012-9-26 00:19
标题: replace替换的问题
本帖最后由 屈俊材 于 2012-9-26 07:50 编辑
  1. <p>//试了半天没输出想要的结果,各位大虾帮看哈哪 里不对了</p><p>public class TestField1 {
  2.         public static void main(String[] args) throws Exception, Exception {
  3. String[] s = new String[]{"abc","defc","gruc"};
  4. Class clazz = s.getClass();
  5.                 Field[] fields = clazz.getFields();
  6.                
  7.                 for(int i = 0 ; i < fields.length;i++){
  8.                         String value = (String) fields[i].get(clazz.newInstance());
  9.                         System.out.println(value.replace('c', 'f'));//这里为什么会替换不了呢,而且运行之后就没动静 了,也不输出。这里想要输出被替换了的s数组中的字符串
  10.         }
  11.         }
  12. }</p>
复制代码

作者: 杨卫腾    时间: 2012-9-26 00:28
本帖最后由 杨卫腾 于 2012-9-26 00:34 编辑
  1. class Test4
  2. {
  3.                 public static void main(String[] args) throws Exception
  4.                 {
  5.                         String[] s = new String[]{"abc","defc","gruc"};
  6.                
  7.                 for(int i = 0 ; i < s.length;i++) {
  8.                                System.out.println(s[i].replace('c', 'f'));//这里为什么会替换不了呢,而且运行之后就没动静 了,也不输出。这里想要输出被替换了的s数组中的字符串
  9.                         }
  10.         }
  11. }
复制代码
这样不就好了吗,干嘛还要什么字节码文件的对象呢,为什么要那么麻烦呢!
作者: hello_world!    时间: 2012-9-26 00:49
帮你分析一下原因,一个数组是没有属性的。所以通过数组的字节码得到的属性数组长度是0。Field[] fields = clazz.getFields();在这里fields.length==0.所以没有结果,跟字符串替换没有关系
作者: 张飞年    时间: 2012-9-26 02:01
hello_world! 发表于 2012-9-26 00:49
帮你分析一下原因,一个数组是没有属性的。所以通过数组的字节码得到的属性数组长度是0。Field[] fields =  ...

一针见血!
作者: 张飞年    时间: 2012-9-26 02:01
杨卫腾 发表于 2012-9-26 00:28
这样不就好了吗,干嘛还要什么字节码文件的对象呢,为什么要那么麻烦呢! ...

呵呵,,在练习反射呢。




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