■ はじめに
いまさらだが、変数、データ型、定数を整理。
実行環境
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