#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿