#3 Kotlinで学ぶ演算子の基本

Kotlinの演算子は、Javaを踏襲しつつも、より安全に書けるよう工夫された部分があります。この記事では、Kotlinの基本的な演算子とnull安全のための演算子について解説します。

算術演算子・比較演算子

Kotlinでは、次のような演算子を使います。

  • + - * / % 算術演算子
  • == != > < 比較演算子
  • && || ! 論理演算子

Javaと違い、Kotlinの==は文字列同士でも中身を正しく比較してくれます。「実体が同じかどうか」を厳密に調べたい場合は、===という別の演算子を使います。

Null安全と演算子

Kotlinには、null(値がない状態)を安全に扱うための独自の演算子があります。

  • ?. 値がnullでなければ処理を続ける
  • ?: 値がnullのとき、代わりの値を使う
val nickname: String? = null
val length = nickname?.length ?: 0
println(length) // 0

このコードは、「nicknameがnullでなければ文字数を、nullなら0を使う」という処理を1行で表しています。

強制的にnullでないと宣言する!!

「絶対にnullではないはず」と確信している場合、!!を使うと強制的にnullでない値として扱えます。

val length = nickname!!.length

ただし、実際にnullだった場合はその場で例外が発生してプログラムが停止します。!!は安全性を手放す書き方なので、?.や?:で対処できないか先に検討するのがおすすめです。

Kotlinならではの注意点

Java経験者は、文字列比較でequals()を使う癖がついていることが多いですが、Kotlinでは==だけで中身の比較が正しく行われます。逆に===を使ってしまうと、Javaの==と同じような意図しない結果になるため、使い分けには注意しましょう。!!は便利に見えても、Kotlinがせっかく提供しているnull安全の恩恵を自ら手放す書き方でもあるため、多用は避けるべきです。

let関数と組み合わせる

?.はletという関数と組み合わせて、値がnullでない場合だけブロック全体を実行する、という書き方でもよく使われます。

nickname?.let {
    println("ニックネームは$it です")
}

nullの場合はブロックの中身自体がスキップされるため、安全にまとめて処理を書けます。

まとめ

Kotlinの演算子は、==が中身の比較として使えるという点でJavaより直感的です。?.や?:といったnull安全のための演算子を積極的に使い、!!は最後の手段として控えめに使いましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Kotlinをもっと学びたい方には「やさしいKotlin入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本