見出し画像

【JavaSilver #03】ガーベジコレクションってなに? staticってよく使うけどなんなんだ??

間違えたけどよくわからんところの詰め合わせ、です。

ガーベジコレクションってなに?

ガーベジコレクションとかいう、聞いたことはあるし、メモリの節約関連ではあるんだよな~って感じの単語がでてきた。


public static void main(String args[]) {
    Object obj = new Object();
    obj = null; // 参照が消えたのでガーベジコレクション発動!!
}

とのこと。参照がなくなったら、勝手にメモリ解放してくれるだけ。
メモリのことなんか全く気にせず適当に設計しまくっている私みたいなプログラマーが泣いて喜ぶべき機能だった。メチャメチャええやんね。

修飾子のstaticって結局なに??

static を付けたら、インスタンス化しなくてもそのメソッドが呼べるようになるな~ くらいの気持ちで使っていたのですが、中身の仕組みは、資格勉強の過程で初めて知りました。

「staticをつけると、static領域(インスタンス化しなくても共通で使える?)に変数やメソッドが用意される」らしい。よぐわがんね~。
インスタンス化しなくても呼べるし、変数やメソッドは、共通で使うよ~くらいの認識でいいか。勉強の意味を否定するなって? うるせ~~~~~~~~~~~~!!!!

・同じクラス内であっても、staticから非staticにアクセスできない(インスタンス化してアクセスすること)
・staticからstaticにはアクセス可能!
・1つのクラス内で、static変数は共有!

これだけ覚えておこう。
なんか、static変数の場合、nullでもヌルポが出ないらしい。試してないのでわかりません。

可変長引数??なんだそれ????

void test(int... num) {
// 処理など
}

これで、int型の変数をいくつでも入れれるメソッドが完成する。噂程度に聞いたことはあったけど、実際に使ったことはなかったね。
この場合、int型の配列として渡されるらしい。聞けば便利かもしれないけど、Listで良くない?? 初心者なのでよく分からないけど。

あと、この「int...」の「...」ですが、これ、三点リーダじゃなくて、ピリオド3つなんですよね。
一応、物書きの端くれとして、三点リーダしか許すつもりはないので、多分一生使いません。三点リーダになってから出直してきてください。

とはいえ、これは資格勉強なので、使う使わないにかかわらず、覚えるだけ覚えなくてはいけない。
『可変長引数は、最後にしか使えない』というルールさえ知っていれば問題なさそう。

【OK】
void test(String str, int... num) {
// 処理など
}
【NG】
void test(int... num, String str) {
// 処理など
}

到達不能なコードとかいうコンパイルエラー

void test() {
return;
System.out.print("str");
}

こんな感じのコードがあると、『到達不能なコード』として、コンパイルエラーが出るらしい。
あれ、コンパイルエラーだったっけ?『デッドコードがあります』みたいな警告だったような……でも、黒本様がそういうなら間違いないか。(実際に試すつもりはない)

今日はここまで。staticのあたりとか、理解しないで感覚でコーディングしていたの、今になってヤバいとおもいつつ。さようなら。

いいなと思ったら応援しよう!