ループは、指定された条件が満たされている限り、同じコードブロックを複数回実行することができます。

ループは時間を節約し、エラーを減らし、コードをより読みやすくするために便利です。

目次

whileループ

whileループは、指定された条件がtrueの間、コードブロックを繰り返し実行します:

文法

while (condition) {
  // 実行するコードブロック
}

以下の例では、カウンタ変数(i)が5未満である限り、ループ内のコードが繰り返し実行されます:

var i = 0
while (i < 5) {
  println(i)
  i++
}

注意:条件で使用している変数を忘れずに増加させてください。そうしないと、ループは決して終了しません。

do..whileループ

do..whileループは、whileループの変種です。このループは、条件がtrueかどうかをチェックする前に、コードブロックを一度実行し、その後条件がtrueである限りループを繰り返します。

文法

do {
  // 実行するコードブロック
}
while (condition);

以下の例では、do..whileループを使用しています。条件がfalseであっても、コードブロックは条件がテストされる前に一度は必ず実行されます

var i = 0
do {
  println(i)
  i++
}
while (i < 5)

条件で使用している変数を忘れずに増加させてください。そうしないと、ループは決して終了しません!

if..else式を複数個書く代わりに、より読みやすいwhen式を使用できます。

when式は、実行するコードブロックを選択するために使用されます:

曜日の番号を使って、曜日の名前を計算します:

val day = 4

val result = when (day) {
  1 -> "月曜日"
  2 -> "火曜日"
  3 -> "水曜日"
  4 -> "木曜日"
  5 -> "金曜日"
  6 -> "土曜日"
  7 -> "日曜日"
  else -> "無効な日付。"
}
println(result)

// 出力: "木曜日"(dayが4の場合)

when式は、Javaのswitch文に似ています。

動作の説明

上記の例では、dayの値が4なので、「木曜日」が表示されます。

Kotlinでは、数学で使う論理条件をサポートしています:

これらの条件を使って、異なる条件に基づいて異なるアクションを実行できます。

Kotlinには以下の条件分岐があります:

注意: Javaとは異なり、Kotlinではif..elseをステートメントとしても、式としても使用できます(変数に値を代入するための式として)。下のページの例を参照してください。

目次

Kotlin if

条件がtrueの場合に実行されるコードブロックを指定するには、ifを使用します。

文法

if (condition) {
  // 条件がtrueの場合に実行されるコードブロック
}

ifは小文字で書く必要があります。大文字(IfやIF)ではエラーが発生します。

if (20 > 18) {
  println("20は18より大きい")
}

変数をテストすることもできます。

val x = 20
val y = 18
if (x > y) {
  println("xはyより大きい")
}

例の説明

上記の例では、変数xとyを使用して、xがyより大きいかどうかをテストしています(>演算子を使用)。xが20でyが18なので、20が18より大きいことがわかり、「xはyより大きい」と画面に表示します。

Kotlin else

条件がfalseの場合に実行されるコードブロックを指定するには、elseを使用します。

文法

if (condition) {
  // 条件がtrueの場合に実行されるコードブロック
} else {
  // 条件がfalseの場合に実行されるコードブロック
}

val time = 20
if (time < 18) {
  println("こんにちは。")
} else {
  println("こんばんは。")
}
// 出力: "こんばんは。"

例の説明

上記の例では、time(20)が18より大きいため、条件がfalseになります。したがって、else条件に進み、”こんばんは”と画面に表示します。もしtimeが18未満だった場合、プログラムは”こんにちは”と表示します。

Kotlin else if

最初の条件がfalseの場合に、新しい条件を指定するにはelse ifを使用します。

文法

if (condition1) {
  // condition1がtrueの場合に実行されるコードブロック
} else if (condition2) {
  // condition1がfalseでcondition2がtrueの場合に実行されるコードブロック
} else {
  // condition1とcondition2の両方がfalseの場合に実行されるコードブロック
}

val time = 22
if (time < 10) {
  println("おはようございます。")
} else if (time < 20) {
  println("こんにちは。")
} else {
  println("こんばんは。")
}
// 出力: "こんばんは。"

例の説明

上記の例では、time(22)が10より大きいため、最初の条件はfalseです。次のelse if文の条件もfalseなので、else条件に進み、”こんばんは”と画面に表示します。ただし、もしtimeが14だった場合、プログラムは”こんにちは”と表示します。

Kotlinのif..else式

Kotlinでは、if..elseステートメントを式として使用することもできます(変数に値を代入して返す):

val time = 20
val greeting = if (time < 18) {
  "こんにちは。"
} else {
  "こんばんは。"
}
println(greeting)

ifを式として使用する場合は、elseも含める必要があります(必須)。

注意

ifに1つの文しかない場合は、中括弧{}を省略できます。

fun main() {
  val time = 20
  val greeting = if (time < 18) "こんにちは。" else "こんばんは。"
  println(greeting)
}

この例は、Javaの「三項演算子」(短縮形のif…else)と似ています。

プログラミングでは、2つの値のいずれかを持つデータ型が必要になることがよくあります。例えば:

Kotlinでは、ブーリアン型を使用して、trueまたはfalseの値を取ることができます。

目次

ブーリアンの値

ブーリアン型はBooleanキーワードを使って宣言でき、値としてはtrueまたはfalseのみを取ることができます。

val isKotlinFun: Boolean = true
val isFishTasty: Boolean = false
println(isKotlinFun)   // 出力: true
println(isFishTasty)   // 出力: false

前の章で学んだ他のデータ型と同様に、上記の例も型を指定せずに書くことができます。Kotlinは変数がブーリアンであることを理解します。

val isKotlinFun = true
val isFishTasty = false
println(isKotlinFun)   // 出力: true
println(isFishTasty)   // 出力: false

ブーリアン式

ブーリアン式は、trueまたはfalseのブーリアン値を返します。

比較演算子を使用して、式(または変数)がtrueかどうかを調べることができます。例えば、greater than(>)演算子を使用して、次のように確認できます。

val x = 10
val y = 9
println(x > y) // 出力: true、10は9より大きい

さらに簡単に書くこともできます。

println(10 > 9) // 出力: true、10は9より大きい

以下の例では、equal to(==)演算子を使用して式を評価します。

val x = 10
println(x == 10) // 出力: true、xの値は10に等しい

println(10 == 15) // 出力: false、10は15に等しくない

ブーリアン式の値は、すべてのKotlinの比較や条件の基礎となります。

文字列はテキストを格納するために使用されます。

文字列はダブルクォーテーションで囲まれた文字の集まりです。

目次

var greeting = "Hello"

Javaとは異なり、変数が文字列であることを指定する必要はありません。Kotlinはダブルクォーテーションのおかげで、上記の例でのgreeting変数が文字列であると理解します。

ただし、他のデータ型と同様に、指定したい場合は型を明示することもできます。

var greeting: String = "Hello"

注意:値を後から代入したい場合は、変数を宣言する際に型を指定する必要があります。

var name: String
name = "John"
println(name)

これは問題なく動作します。

var name
name = "John"
println(name)

これはエラーを生成します。

文字列へのアクセス

文字列の文字(要素)にアクセスするには、角括弧内のインデックス番号を参照する必要があります。

文字列のインデックスは0から始まります。以下の例では、txtの最初と3番目の要素にアクセスしています。

var txt = "Hello World"
println(txt[0]) // 最初の要素 (H)
println(txt[2]) // 3番目の要素 (l)
[0]は最初の要素、[1]は2番目の要素、[2]は3番目の要素です。

文字列の長さ

Kotlinの文字列はオブジェクトで、特定の文字列変数の後にドット(.)を記述することで、プロパティや関数を利用して文字列に対する操作を行うことができます。例えば、文字列の長さはlengthプロパティで取得できます。

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
println("文字列txtの長さは: " + txt.length)

文字列の関数

文字列には多くの関数があります。例えば、toUpperCase()toLowerCase()があります。

var txt = "Hello World"
println(txt.toUpperCase())   // 出力: "HELLO WORLD"
println(txt.toLowerCase())   // 出力: "hello world"

文字列の比較

compareTo(string)関数は2つの文字列を比較し、両方が等しい場合は0を返します。

var txt1 = "Hello World"
var txt2 = "Hello World"
println(txt1.compareTo(txt2))  // 出力: 0(等しい)

文字列内の文字列を検索

indexOf()関数は文字列内で指定されたテキストの最初の出現位置(インデックス)を返します(空白も含む)。

var txt = "Please locate where 'locate' occurs!"
println(txt.indexOf("locate"))  // 出力: 7

Kotlinは位置をゼロからカウントします。

0が最初の位置、1が2番目の位置、2が3番目の位置です。

文字列内の引用符

文字列内で引用符を使用するには、単一引用符(’)を使用します。

var txt1 = "It's alright"
var txt2 = "That's great"

文字列の連結

文字列同士を加算するために+演算子を使用できます。これを文字列の連結と呼びます。

var firstName = "John"
var lastName = "Doe"
println(firstName + " " + lastName)

ここではfirstNamelastNameの間に空のテキスト(” “)を追加してスペースを作っています。

また、plus()関数を使用して2つの文字列を連結することもできます。

var firstName = "John "
var lastName = "Doe"
println(firstName.plus(lastName))

文字列テンプレート/補間

連結の代わりに、「文字列テンプレート」を使用することもできます。これは文字列内に変数や式を簡単に追加する方法です。

変数を参照するには、$シンボルを使用します。

var firstName = "John"
var lastName = "Doe"
println("私の名前は $firstName $lastName です")

「文字列テンプレート」はKotlinの人気機能で、コード量を減らすことができます。例えば、連結の例のようにfirstNamelastNameの間に空白を指定する必要がありません。

演算子は変数や値に対して操作を行うために使用されます。

値はオペランドと呼ばれ、2つのオペランドの間で行う操作は演算子によって定義されます。

以下の例では、100と50がオペランドで、+記号が演算子です。

目次

var x = 100 + 50

+演算子は、上の例のように2つの値を加算するのによく使われますが、変数と値、または変数と変数を加算するのにも使用できます。

var sum1 = 100 + 50       // 150 (100 + 50)
var sum2 = sum1 + 250     // 400 (150 + 250)
var sum3 = sum2 + sum2    // 800 (400 + 400)

Kotlinの演算子は以下のグループに分かれています:

算術演算子

算術演算子は一般的な数学的操作を実行するために使用されます。

演算子 名前 説明
+ 加算 2つの値を加算します x + y
減算 1つの値から別の値を引きます x - y
* 乗算 2つの値を掛け算します x * y
/ 除算 1つの値を別の値で割ります x / y
% 剰余 除算の余りを返します x % y
++ インクリメント 値を1増やします ++x
デクリメント 値を1減らします --x

Kotlinの代入演算子

代入演算子は、変数に値を代入するために使用されます。

以下の例では、代入演算子(=)を使用して、変数xに値10を代入しています。

var x = 10

加算代入演算子(+=)は、変数に値を追加します。

var x = 10
x += 5

全ての代入演算子の一覧:

演算子 同じ意味
= x = 5 x = 5
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
%= x %= 3 x = x % 3

Kotlinの比較演算子

比較演算子は2つの値を比較し、ブール値(true または false)を返します。

演算子 名前
== 等しい x == y
!= 等しくない x != y
> より大きい x > y
< より小さい x < y
>= 以上 x >= y
<= 以下 x <= y

Kotlinの論理演算子

論理演算子は変数や値間の論理を決定するために使用されます。

演算子 名前 説明
&& 論理積 両方の条件が真であれば true を返します x < 5 && x < 10
|| 論理和 いずれかの条件が真であれば true を返します x < 5 || x < 4
! 論理否定 結果を反転させ、結果が真であれば false を返します

Kotlinでは、変数の型はその値によって決まります。

目次

val myNum = 5             // Int
val myDoubleNum = 5.99    // Double
val myLetter = 'D'        // Char
val myBoolean = true      // Boolean
val myText = "Hello"      // String

ただし、前の章で学んだように、型を指定することも可能です。

val myNum: Int = 5                // Int
val myDoubleNum: Double = 5.99    // Double
val myLetter: Char = 'D'          // Char
val myBoolean: Boolean = true     // Boolean
val myText: String = "Hello"      // String

型を指定する必要がある場合もあれば、指定しなくてもよい場合もありますが、異なる型が何を表すかを知っておくと良いでしょう。型を指定する必要がある場面については、後ほど詳しく学びます。

データ型は以下のグループに分かれます:

数値型

数値型は二つのグループに分かれます:

数値型を指定しない場合、整数値は通常 Int として、浮動小数点数は Double として返されます。

整数型