演算子
- 単項演算子
var count: Int = 1
println(count++) // 1 (値を表示された後にインクリメント)
println(count--) // 2 (値を表示された後にデクリメント)
println(++count) // 2 (値を表示させる前にインクリメント)
println(--count) // 1 (値を表示させる前にデクリメント)
println(!true) // false (真偽値の反転)
- 範囲を指定する演算子
// 数値
for(i in 1..5) {
println(i) // 1 2 3 4 5
}
// Char型
for(s in 'a'..'e' ) {
println(s) // a b c d e
}
- 代入演算子
var result = 10
// result = result + 5と同義
result += 5
println(result) // 15
// result = result - 5と同義
result -= 5
println(result) // 10
// result = result * 5と同義
result *= 5
println(result) // 50
// result = result / 5と同義
result /= 5
println(result) // 10
// result = result % 5と同義
result %= 5
println(result) // 0
- 比較演算子
println("abc" == "abc") // true
println("abc" != "abc") // false
data class User(
val id: Int
)
-------------------------------------
val user1 = User(id = 1)
val user2 = User(id = 1)
println("user1 == user2 : ${user1 == user2}") // true
println("user1 === user2 : ${user1 === user2}") // false 参照先が異なるため
- when式
val color: String = "red"
when(color) {
"red" -> "赤" // 改行ごとの「,」は不要
"blue" -> "青"
"green" -> {
"緑"
} // 処理が複数行に及ぶ場合は「 {} 」を記述する
}
// 戻り値を返す場合
val choiceColor = when(color) {
"red" -> "赤" // 改行ごとの「,」は不要
"blue" -> "青"
"green" -> 1 // 型推奨にすれば値によって返す型を返ることもできる
else -> "白" // 「else」に該当なしの場合の戻り値を記述(必須)
}
// enumクラスを条件に指定して全ての条件を網羅した場合、「else」は不要
val enumColor = when (Subject.MATH) {
Subject.MATH -> "数学"
Subject.ENGLISH -> "英語"
Subject.SCIENCE -> "化学"
}
- for文
for(i in 1..100) {
println(i) // 1から100まで出力される
}
for(i in listOf("あ","い","う")) {
println(i) // あ い う
}
/*
ラベル
ラベルを付けることにより、forが2つ以上ある場合にラベル付のfor文に対してbreakやcontinueが指定できる
*/
loop@ for(a in 1..5) { // ルートのfor文にloop@ラベルを指定する
for(b in 1..5) {
if(a == 2 && b == 5) {
break@loop
}
println("a:$a b:$b")
}
}
- while文
var i = 10
while(i > 0) {
println(i)
i-- // 10から1まで出力
}
i = 10
do {
println(i)
i-- // 10から1まで出力
} while(i > 0)
コレクション
-
要素の変更はバグの原因となりやすいため、いずれのコレクションでもイミュータブルなリストの使用を推奨
-
リスト
/*
通常のリスト(イミュータブル)
・要素の追加・削除ができない
*/
val iMutableList = listOf(1,2,3)
println("iMutableList : $iMutableList") // 1,2,3
iMutableList += 4 // イミュータブルなので要素の追加は行えない
iMutableList -= 3 // イミュータブルなので要素の削除は行えない
/*
ミュータブルリスト
・要素の追加・削除が可能
*/
val mutableList = mutableListOf(1,2,3,3)
mutableList += 4 // 要素の追加(最後尾に追加する値を直接指定)
mutableList -= 3 // 要素の削除(値と一番最初に一致した要素を削除)
println("mutableList : $mutableList") // 1,2,3,4
*セット
/*
セット
・一意の要素を保持できる
*/
val iMutableSet = setOf(1,2,3,3)
println("iMutableSet : $iMutableSet") // 1 2 3 (一意の要素を保持)
val mutableSet = mutableSetOf(1,2,3,3)
mutableSet += 4 // 要素の追加(最後尾に追加する値を直接指定)
mutableSet -= 3 // 要素の削除(値と一番最初に一致した要素を削除)
println("mutableSet : $mutableSet") // 1,2,4 (一意の要素を保持)
- マップ
/*
マップ
・ キーと値のペアのセットを持つコレクション
*/
val iMutableMap = mapOf("phone" to "000-111-222", "address" to "123")
iMutableMap["address"] = "1234" // イミュータブルなので値の変更ができない
val mutableMap = mutableMapOf("phone" to "000-111-222", "address" to "123")
mutableMap["address"] = "1234"
println("mutableMap : $mutableMap")