MatsuoTech

技術メモとひとりごと。

気にしたことがなかったJava #1

IDEの功罪の罪の方。Java 11 SE Silverを勉強してて気づいたことの話。

鍵カッコナシif文

if (true) {
    // do something
} else {
    // do something
}

は、

if (true) 
    // do something
else
    // do something

と書ける。そのなかでelse-ifはどう書かれるか

if (true)
    // do something
else if(false)
    // do something

と書く。ではネストしたif文は

if (true)
    // do something
else
if (false)
   // do something
else
   // do something

と書く。これを鍵カッコ付きで書くと

if (true) {
    // do something
} else {
    if (false) {
        // do something
    } else {
        // do something
    }
}

となる。改行がネストを表す。
こんなコードは書いてはいけないと思っているけど、書けるみたいです。

Switch文の条件式で使える型

使えるもの
  • char(Character)
  • short(Short)
  • String
  • byte(Byte)
  • int(Integer)
  • Enum
使えないもの
  • double、float等の浮動小数点値
  • 他オブジェクト
他注意点

比較する値に変数は使えない。final宣言された定数のみ。

Switch文のdefault

defaultより前の式においてbreakされていないと実行されてしまう。

String.intern()

internメソッドはコンスタントプール(実際の値を持つメモリ上の領域)の値を返すため、以下の比較でもtrueになる。

String a = "abc";
String b = new String("abc");
if (a.intern() == b.intern()) {
    // nanka suru
}

equalsメソッド盲点

以下のような実装で、equalsメソッドでObject型を受け取ると、Objectのequals(参照同一性比較)が走る

public class Sample() {
    private int val;
    public Sample(int val) {
         this.val = val;
    }

    public boolean equals(Sample obj) {
         // オブジェクト型で受け取り、Sampleにキャストする実装にするとよい。
    }
}

明日からも他学習内容を書いていく。

vs.コロナウイルスログ②

2023/01/16

  • オンライン診療で処方してもらったクスリがとどいた。タンを軽減するクスリが重宝。

  • 解熱薬で平熱になったりもしたが、晩には38.8℃になる。調子コいてFPSしてたけどそんな場合じゃなかった。

  • 解熱薬、効くんだな。

2023/01/17

  • ノドとタンのクスリだけ服用することにする。解熱剤は乱用すると体の免疫力を損ないそうなので。

  • 股に保冷剤挟むの、クセになってんだ。…HUNTER×HUNTER読んだことないけど。

2023/01/18

  • 発熱がおさまる。ノドの違和感が半端なかったが、熱のしんどさがやっぱり本線だったと痛感。

  • 普通に風呂入って、寝れた。

  • 19日(翌日)から在宅で働くことにした。実は有給が心許ないの。

総括

  • 症状自体はややこい風邪。でも風邪とは違い、薬が効いたり効かなかったり、効いてもすぐぶり返したりで先の見えない感じが怖かった。

  • よくよく思うと、風邪だって長引けば命に係わってくるよな。バカにできない。

  • 二回目はならないよう、四回目のワクチンを検討に検討を重ねる。4月くらいに打ちたい。