値または参照することによって、Java言語の違い1パスで行きます

Javaでは、基準となる(元のクラスタイプ以外の)複合タイプは、この方法で変更された後に、オブジェクトのメソッド内の値のうちであること、残る、参照によって渡されます。元の型を渡すことなどINT、ダブル、プリミティブ型としての値です。
Javaコード:
パブリッククラスのテスト{ 

    静的クラス頂点{ 
        公共の二重X。
        公共ダブルY; 
    } 

    静的ダブルABS(頂点v){ 
        リターンMath.sqrt(VX * VX + VY * VY)。
    } 

    静的ボイドスケール(頂点v、ダブルF){ 
        VX = VX * F。
        VY = VY * F; 
    } 

    パブリック静的無効メイン(文字列[] args){ 
        頂点の頂点=新しい頂点()。
        vertex.x = 3。
        vertex.y = 4。
        System.out.println(ABS(頂点))。// 5 

        スケール(頂点、10)。
        System.out.println(ABS(頂点))。// 50 
    } 
}
 
ゴーでは、本方法の構造は、デフォルト値が渡され、即ち、操作の元の値のコピーは、元の値を変更しません。* Tとの意図した受信者ならば、受信者によって指定された値を変更することが可能です。この方法は、多くの場合、その受信機を変更する必要があるため、受信機は、より一般的に、レシピエントポインタの比です。
ゴーコード:
メインパッケージ

インポート(
	"FMT" 
	"数学" 

{頂点構造体を入力
	X、Yのfloat64 
} 

(頂点v)のFUNC ABS()のfloat64 { 
	リターンmath.Sqrt(のvX *のvX + VY * VY)
} 

FUNC(V *頂点) (のfloat64 F)スケール{ 
	のvX =のvX * F 
	VY = VY * F 
} 

FUNCメイン(){ 
	V =頂点{3,4} 
	v.Scale(10)
	fmt.Println(v.Abs())// 50 
}
16行は*削除した場合、出力値はそれは、*が値によって渡されることなく、元の値又は転送のコピーである、5である;プラス*のみ、元の値が変更されます。

おすすめ

転載: www.cnblogs.com/sxpujs/p/11941166.html