0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kotlinの基本文法➁ ~演算子・制御構文・コレクション~

Posted at

演算子

  • 単項演算子
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")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?