結果だけでなく過程も見てください

たい焼きさんの日々の奮闘を綴る日記です。

たまにしか書かないので、とにかく忘れるJavaプログラミング

C#でも同じようなことをやったような?
忘れがちなことの自分用備忘録!適宜更新!

メソッドの引数はすべて値渡しである

プリミティブ型であろうがオブジェクトの参照渡しだろうが、引数に代入をしてもコール元には影響を与えない!

public void func1( Puyo puyo )
{
    puyo = redpuyo;    // コール元に影響は与えない!
}

public void func2( int[] array )
{
    array = another_array;   // もちろんコール元に影響は与えない!
}

影響を与えるのは、そのメンバを更新したときである。
C++のポインタ渡し(これもポインタのコピー、つまり値渡し)と同じですね。

public void func3( Puyo puyo )
{
    puyo.color = RED;    // コール元のオブジェクトのcolorの値も変わる!
}

ややこしいイメージがあったけど、非常にシンプルですね。
C#のrefやoutキーワードみたいなのはないのかな?

final

クラスにつけたとき 継承不可になる(スーパークラスに指定できない)
メソッドにつけたとき 継承不可になる(オーバーライドできない)
変数につけたとき 一度値を設定すると変更できなくなる

ただしオブジェクト自体にfinalをつけても、メンバーの値は変更可。
このへんがC/C++のconstとちょっと違いますね。

final Puyo puyo = new Puyo();
puyo.color = RED;  // 変更可

環境変数

いっつも忘れる。

JAVA_HOME JAVA_HOMEを作ってjdkまで入れる(例:C:\Program Files\Java\jdk1.8.0_31)
javacなど Pathにbinまで入れる(例:%JAVA_HOME%\bin)
プライバシーポリシー お問い合わせ