見出し画像

【JavaSilver #07】試験直前ながら覚えておいたほうが良さげな色々をまとめよう

試験前日、直前になって、まだ黒本を一周すらできてないのはヤバい(厳密には、1~11章を2周して、12以降はノータッチ)。ということで、
黒本の12章をひととおり解いていきながら、気になったところをメモ程度に書いていきます。
完全初見なので、7割くらいとれていればいいな。

java コマンドから実行時の自動コンパイル

package b;
public class B {
}

package a;
import b.B;
public class A {
    public static void main(String[] args[]) {
        B b = new B();
    }
}

↑の場合、
java a/A でAクラスを実行することで、インポートしているBクラスも実行時にコンパイルしてくれる

モジュールの相互依存(コンパイルエラー)

module A {
     requires B;
}
module B {
     requires A;
}
AはBを、BはAを必要とし合っているため、無限ループとなってコンパイルエラー。百合なら尊いのにね。

switch分のdefaultってどこでもいいらしい

switch(test) {
    default:
        System.out.print("C");
    case 0:
        System.out.print("A");
        break;
    case 10:
        System.out.print("B");
        break;
}
これでもコンパイルエラーにならないらしい。
test = 0 の場合は、"A"が表示される(default はあくまで見つからなかったときに実行する。どこにあっても関係ない)
test = 1 の場合は、"CA" となる。(default にbreak; がされていないため。多分絶対一問はでてくる問題)

StringとStringBuilderの違い

String a = "aaa";
a.substring(0,2);

変数aの中身は、"aa"になるかと思いきや、"aaa"のまま。これは、Stringクラスが『不変』であるため。

StringBuilder a = new StringBuilder();
a.append("aaa");
a.deleteCharAt(0);

変数aの中身は、"aa"になるかと思いきや、やっぱり"aa"になる。これは、StringBuilderクラスが『可変』であるため。
ちなみに、StringBuilderのsubstringクラスで比べようと思っていたら、あれ、切り出してString型で返すよってだけのメソッドだった(内部の値自体を変えるわけではなかった)
実際に動かさないと気が付かなかった。

List.of()で生成したリストは変更できない!!

List.of()で生成したリストは変更できない!!(大事なことなので二回いった)

代入演算子が複数ある場合の処理順

a = b = c = 10;
この場合は、
c = 10 → b = c(10) → a = b(10) の順番で行われる。というか、複数書けることすら知らなかった。見た目が嫌いだから使わないけど。

アクセス修飾子

public < protected < 修飾子なし < private の順に厳しくなる。一生ごっちゃになる。おぼえられね

80問中 正答率59%。
こうして、間違えた箇所とかを書くことで知識として蓄積はされてるけれど
結局、コード見て気付けないせいでクソも点が取れないということに気が付かされた80問だった。そもそも、注意力ねーのにどうやって気づけっていうんだ?
仕事終わりの深夜にやってるせいか、解答見てストレスマッハなので今日はもう寝よう。なんだよこの引掛け問題気付けるかどうかのクソゲー。あ~~~~~~むかつく~~~~~~~~~もうええわ落ちても。しらん、じゃあなワイの4万弱!!!!!

この記事が気に入ったらサポートをしてみませんか?