本帖最后由 rosecshly0928 于 2011-11-12 18:49:32 编辑

解决方案 »

  1.   

    1.V中的域i是public类型,所以第二个类中的second()可以修改它,因为在打印之前调用了second()函数,second()中明确进行了赋值(V.i=20),所以V.i就等于20.
    2.我感觉第二个错,第三个对,第一个与第四个我也不知道。
      

  2.   

    2.第一个是对的
    顶层类(非内部类)只可以处于 公开 或 默认的访问级别。不能用protected和private来修饰。(修饰顶层类的修饰符包括abstract,public和final,而static,protected和private不能修饰顶层类;成员方法和成员变量可以有多种修饰符,而局部变量只能用final修饰。)
      

  3.   

    2. Apackage examples.base;public class A {
        protected static class AA {    }
    }
    package examples.core;public class B extends examples.base.A {
        protected static class BB extends examples.base.A.AA {    }
    }
      

  4.   

    1.在传递参数时,引用类型传递的其实是引用的地址,当通过这个地址改变对象中的属性值时,原对象的属性也会相应改变,所以到v.i = 20;时,此v指向的地址就是first()中的v。但当second()中为v重新new了一个ValueConversion时,v不在指向first()中的对象,虽然second()中的v.i改为了15,frist()中的v.i仍然是20。也就是说再ValueConversion val = new ValueConversion();v = val;这里,两者的联系就断开了
    2.好像是选C
      

  5.   

      int i = 5;
      ValueConversion v = new ValueConversion();
      v.i = 25;
      second(v, i);
      System.out.println(v.i);//不明白这个地方为什么会输出20?
      }
      public void second(ValueConversion v, int i)
      {
      i = 0;
      v.i = 20;
      ValueConversion val = new ValueConversion();
      v = val;
      System.out.println(v.i + " " + i);
    觉得是上面的new调用了下面的ValueConversion方法,所以v.i会输出20吧。
    剩下的不懂????期待高人