【Kotlin】Kotlin ~ 基本編 / 変数・型・定数 ~

■ はじめに

いまさらだが、変数、データ型、定数を整理。

実行環境
https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt

目次

【1】変数
【2】定数
【3】データ型
【4】Nullの扱い(Null安全)
 1)安全呼び出し演算子 ?.
 2)エルビス演算子 ?:
 3)null許容型のnullチェック
【5】型変換
 1)toデータ型 / toデータ型OrNull
 2)キャスト
【6】型チェック

 【1】変数

val:読み込み専用(Getterのみ, Read-only)
var:書き換え可能(Getter, Setter)

 【2】定数

1)const val
2)companion object

1)const val

* クラス外に定義

サンプル

private const val CONST_PARAM = "Hello World!"

class SampleClass {

2)companion object
https://dk521123.hatenablog.com/entry/2020/07/23/000000

より抜粋

サンプル

class SampleClass {
  companion object {
    // Const
    // public
    const val KEY_OF_ID = "sample_id"
    // private
    val KEY_OF_NAME = "sample_name"

    // 略
  }
}

【3】データ型

# データ型 ビット値 種類
1 Double 64 浮動小数 12345.6
2 Float 32 浮動小数 12345.6f
3 Long 64 整数 123456L
4 Int 64 整数 123456
5 Short 16 整数 1234
6 Byte 8 整数 127
7 String - 文字列 "Hello world"
8 Char - 文字 'A'

【4】Nullの扱い(Null安全)

1)安全呼び出し演算子 ?.

* 以下を一つの式で実行。
 a. null チェック
 b. メソッド/プロパティの呼び出し

サンプル

var value: String? = null

print("Length: ${value?.length}")

2)エルビス演算子 ?:

* null の場合、デフォルト値を返す

構文

1 ?: 値2

サンプル

var value1: String? = null
var value2: String = value1 : "World"

print("Hello ${value2}")

3)null許容型のnullチェック

// null OK (null許容型)
var value: String? = null

// null は代入不可
var value: String = "Hello World"

【5】型変換

1)toデータ型 / toデータ型OrNull
2)キャスト

1)toデータ型 / toデータ型OrNull

サンプル

var value = "123"
var intValue:Int = value.toInt()

toデータ型OrNull(e.g. toIntOrNull())

// 例えば、toInt() で整数ではなかった場合、例外が発生してしまう
// ⇒ toIntOrNull() を使えば、例外が発生せずに、null が返すだけ。
var value = "hello"
var intOrNullValue = value.toIntOrNull()

2)キャスト

* as 演算子を使う
 => Java のように「(データ型) value」はつかない

サンプル

var value = "123"
var intValue:Int = value as Int

// null のキャスト
var value1:String? = "Hello world"
var value2 = value as String

// Int? へのキャスト
var value3 = "Hello"
// 例外が発生せず、null
var value4 = value3 as? Int

【6】型チェック

* is 演算子を使用

サンプル

var value = "Hello world"

if (value is String) {
   print("value is String")
}

関連記事

Kotlin ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/09/13/001546
Kotlin ~ 基本編 / クラス ~
https://dk521123.hatenablog.com/entry/2020/07/23/000000