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

本帖最后由 m313786372 于 2014-8-13 09:23 编辑
  1. public class TestOne {
  2.         public static void main(String[] args){
  3.                 Perso p1 = new Perso(1);
  4.                 Perso p2 = new Perso(2);
  5.                
  6.                 change(p1,p2);
  7.                 System.out.println("p1="+p1.i+", p2="+p2.i);
  8.     }

  9.         static void change(Perso p1, Perso p2) {
  10.                 p1 = new Perso(3);
  11.                 p2 = new Perso(4);
  12.         }
  13. }


  14. class Perso {
  15.         int i;
  16.         
  17.         Perso(int i) {
  18.                 this.i = i;
  19.         }
  20. }
复制代码

单选投票, 共有 13 人参与投票

投票已经结束

46.15% (6)
53.85% (7)
您所在的用户组没有投票权限

9 个回复

倒序浏览
。。选第二个
回复 使用道具 举报
  1. public class TestOne {
  2.        public static void main(String[] args){
  3.             Perso p1 = new Perso(1);
  4.                         Perso p2 = new Perso(2);                                    
  5.                     change(p1,p2);//①
  6.                         System.out.println("p1="+p1.i+", p2="+p2.i);
  7.           }
  8.       static void change(Perso pa, Perso pb) {
  9.                pa = new Perso(3);
  10.                pb = new Perso(4);
  11.                            //在这个地方增加打印语句
  12.                             System.out.println("pa="+pa.i+", pb="+pb.i);
  13.        }
  14. }
  15. class Perso {
  16.         int i;
  17.         Perso(int i) {
  18.                 this.i = i;
  19.        }
  20. }
复制代码

①处的执行语句只存在方法区中,该方法执行完就结束了,不会改变p1和p2的指向,p1和p2指向堆内存,因此main方法中打印结果为p1=1,p2=2;change()方法中打印结果为pa=3,pb=4
回复 使用道具 举报
Person是自定义类,属于引用类型,所以所第2项
回复 使用道具 举报
回去试验下
回复 使用道具 举报
那个pl.i是什么啊
回复 使用道具 举报
因为p1和p2是引用数据类型, 所以选第二个
回复 使用道具 举报
nadax 中级黑马 2014-8-14 09:55:22
8#
第一个,很明显的 change是引用的。 所以最终输出还是1,2
回复 使用道具 举报
change()本来就是无返回类型的方法,他不会返回p1,p2.所以下面打印的就是 Perso p1 = new Perso(1);
   Perso p2 = new Perso(2);
回复 使用道具 举报
change(p1,p2);//①
                        System.out.println("p1="+p1.i+", p2="+p2.i);
          }
      static void change(Perso pa, Perso pb) {
               pa = new Perso(3);
               pb = new Perso(4);  
主看这一部分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马