参照渡しと値渡し、引数には注意が必要!?
参照渡しと値渡し 参照渡しと値渡し 引数には注意が必要 前回 、プリミティブ型とクラス型についてまとめました。 内容としては、変数であっても プリミティブ型の変数 と クラス型の変数 によってデータの格納の仕方が異なるため、比較を行うときには注意が必要である。というものです。 今回の内容は、この プリミティブ型の変数 と クラス型の変数 には比較以外に 引数 でも注意が必要となります。 私もこの引数で注意を怠り謎の不具合が出たことがあります。これはプログラミングに慣れてきたころに起こるミスだと思います。 参照渡しと値渡しとは プリミティブ型は 箱のイメージ なのに対して、クラス型は データの場所 を格納します。そのため引数でデータを渡すときにも、データの値を直接渡すのか、データの場所を渡すのか変わってきます。 値渡し プリミティブ型 を引数とした時には、この 値渡し となります。 これは、引数に与えられたデータをコピーして、メソッド内で使う変数と、引数に渡した変数は 別物 として扱われます。 そのためメソッド内で引数の変数の値を変えても、もとの変数の値は変わりません。 参照渡し クラス型 を引数とした時には、この 参照渡し となります。 これは、もとの変数のデータの場所を引数の変数に渡します。そのためメソッド内で引数の変数の値を変えると、メソッドを抜けた後のもとの変数の値も変わったままになります。 では、以下のコードを実行してみましょう。 class Test { public static void main( String[] args ) { int ...