値の転送と参照の転送について

2125 ワード

Javaには、次の2つの変数があります.
1.基本型変数:char,byte,short,int,long,float,double,boolean.
2.参照タイプ変数:クラス、インタフェース、配列(基本タイプ配列とオブジェクト配列)を含む.
public class ParamTest {

    //    0
    protected int num=0;
    
    //String   
    String str="1234";
    
    //         
    public void change(int i)
    {
        i=5;
        }
    public void change(String str)
    {
        str="4556";
    }
    
    //         
    public void change(ParamTest t)
    {
        ParamTest tmp=new ParamTest();
        tmp.num=9;
        tmp.str="    ";
        t=tmp;
        }
    //        
    public void add(int i)
    {
        i+=10;
        }
    //          
    public void add(ParamTest t)
    {
        t.num+=20;
        t.str="welcome";
        }
    public static void main(String[] args) {
    
        ParamTest t=new ParamTest();
        System.out.println("  -    ");
        System.out.println("    :"+t.num);
        
        //           
        t.change(t.num);
        System.out.println("    :"+t.num);
        
        t.change(t.str);
        System.out.println("String    :"+t.str);
        
        //           
        t.change(t);
        System.out.println("    :"+t.num);
        System.out.println("    :"+t.str);
        
        //       
        t.add(t.num);
        System.out.println("    :"+t.num);
        
        //      
        t.add(t);
        System.out.println("      :"+t.num);
        System.out.println("      " + t.str);
        
    }
}

この部分のコードは详しく値の伝达と引用の伝达の関系を说明しました.値の伝达はただCopyが过去になっただけです.した动作は本当の値と関系します.引用の伝达はアドレスの上の変化です.だから相応の影响があります
パラメータ-ベースタイプの元の値:0賦値後:0 String変更後:1234演算後:0演算後:1234変更後:0参照変更後:20参照変更後welcome