关于Java中值传递还是引用传递的问题解析-------引用校招笔试中的一道题进行解释

来源:互联网 发布:淘宝的读书软件 编辑:程序博客网 时间:2024/05/23 01:18
值传递和引用传递在我做校招准备的时候,困扰了我很久,每次碰到都害怕,后来接触多了,好像慢慢也懂了,本文不想过多的用专业的术语去解释到底是值传递还是引用传递,还是只有值传递,只想能够梳理清楚解题时的思路,因而写下这篇文章,也当做是笔记,供自己复习。

首先上题目,问输出什么?

class  Value{
    public  int  i=15;
}
public  class Test{
    public  static  void  main (String argv[]){
        Test  t= new Test  ( );
        t.first  ( );
    }
 
public  void  first( ){
    int  i= 5;   //注意这个i是局部变量
    Value v= new  Value( );
    v.i=25;     //创建了一个Value对象,并把此对象的属性i赋值25(默认值为15)
    second(v,i);   //v (v中的属性i值为25) 和 局部变量i 传进函数second
    System.out.println(v.i);//v的属性i在second函数中被改为了20
}
 
public  void  second(Value v1,int i){
    i = 0;     //second函数中的局部变量,和之前的i没关系
    v1.i = 20;//将传进的V的属性i改为20
    Value val = new  Value( );
    v1 = val;        //新创建的Value对象val,属性i值为15,并将v指向val对象,v已经和之前传进来的对象没关系了
    System.out.println(v1.i+" "+i);        //此时v的属性i为15,先输出 15(v.i) 0(i)
   }
}

阅读全文
0 0
原创粉丝点击