Kotlinのまとめ

言語
スポンサーリンク

言語ごとに書き方が若干異なる部分を中心にまとめています。

特徴

Kotlinは、JetBrainsによって開発されたプログラミング言語です。その特徴は以下の通りです。

  • Javaとの互換性が高いこと
  • Null安全性を持っていること
  • 関数型プログラミングに対応していること
  • Extension functionやLambdaなどの高機能な機能を持っていること
  • Androidアプリ開発に適していること

Kotlinは、Java言語と互換性が高いため、Javaで書かれた既存のコードをKotlinに簡単に移植することができます。
また、KotlinはNull安全性を持っているため、NullPointerExceptionを防ぐことができます。
Kotlinは関数型プログラミングにも対応しており、LambdaやExtension functionなどの高機能な機能を持っています。
特にAndroidアプリ開発には適しているため、Googleが推奨言語として採用しています。

お試し実行環境

ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO
paiza.IOはオンラインですぐにプログラミングが始められる、オンライン実行環境です。Java,Ruby,Python,PHP,Perlなど主要32言語に対応。プログラミング学習にも。

参考サイト

Kotlin Bootcamp for Programmers  |  Training Courses  |  Android Developers
次の機能は、他の言語で使用されている機能とKotlinで異なる場合があります。

Kotlin型は暗黙的に変換できません。キャストを使用してください。
val で宣言された変数は、一度しか割り当てることができません。
Kotlin変数は、デフォルトでは null にできません。 ? 変数をヌル可能にするために使用します。
Kotlinを使用すると、ループ内で配列のインデックスと要素を同時にforループできます。

次のKotlinプログラミング構造は、他の言語のものと似ています。

配列とリストには、単一のタイプまたは混合タイプを含めることができます。
配列とリストはネストできます。
ループを作成することができ、 for 、 while 、 do/while 、と repeat が使えます。
when は switch のKotlinバージョンであるが、 when の方がより柔軟です。
Android Basics with Compose course  |  Android Developers
The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.
Android Basics with Compose course  |  Android Developers
The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.

ログだし

println("Hello world")

コメント

// 1行コメント
/*
複数行コメント
*/

変数宣言

var hoge = "HOGE" // varは再代入可能な変数
val fuga = "FUGA" // valは再代入不可な変数(他の言語でいうconstやfinalと同じイメージ)
//val piyo // valは初期値無しで宣言できない

hoge = "HOGEHOGE"
//fuga = "FUGAFUGA" // 再代入不可なのでエラーとなる

比較演算子

演算子 説明
== 等しい
!= 等しくない
> より大きい
>= 以上
< より小さい
<= 以下
=== 同一オブジェクト
!== 異なるオブジェクト

論理演算子

演算子 説明
&& And
|| Or
! Not
if (true && true) {
    println("true")
}
if (true || false) {
    println("true")
}
if (!false) {
    println("true")
}

繰り返し

for (i in 1..10) {
    println(i);
}
for (i in 1..10 step 2) {
    println(i);
}
for (i in 1..5) print(i)
for (i in 5 downTo 1) print(i)
for (i in 3..6 step 2) print(i)
for (i in 'd'..'g') print(i)
val school = arrayOf("shark", "salmon", "minnow")
for (element in school) {
    print(element + " ")
}

for ((index, element) in school.withIndex()) {
    println("Item at $index is $element\n")
}
var bubbles = 0
while (bubbles < 50) {
    bubbles++
}
println("$bubbles bubbles in the water\n")

do {
    bubbles--
} while (bubbles > 50)
println("$bubbles bubbles in the water\n")

repeat(2) {
     println("A fish is swimming")
}

配列

val array = arrayOf(1, 2, 3, 4, 5)

for (i in array) {
    println(i)
}
val array = arrayOf(1, 2, 3, 4, 5)

array.forEach { i ->
    println(i)
}
val array = arrayOf(1, 2, 3, 4, 5)

array.forEach {
    println(it)  //暗黙的な書き方、itに要素が代入される
}
val school = listOf("mackerel", "trout", "halibut")
println(school)
val myList = mutableListOf("tuna", "salmon", "shark")
myList.remove("shark")
val school = arrayOf("shark", "salmon", "minnow")
println(java.util.Arrays.toString(school))
val mix = arrayOf("fish", 2)
val numbers = intArrayOf(1,2,3)
val numbers3 = intArrayOf(4,5,6)
val foo2 = numbers3 + numbers
println(foo2[5])
val array = Array (5) { it * 2 }
println(java.util.Arrays.toString(array))

条件式

val numberOfFish = 50
val numberOfPlants = 23
if (numberOfFish > numberOfPlants) {
    println("Good ratio!") 
} else {
    println("Unhealthy ratio")
}

if (numberOfFish == 0) {
    println("Empty tank")
} else if (numberOfFish < 40) {
    println("Got fish!")
} else {
    println("That's a lot of fish!")
}

when (numberOfFish) {
    0  -> println("Empty tank")
    in 1..39 -> println("Got fish!")
    else -> println("That's a lot of fish!")
}
val fish = 50
if (fish in 1..100) {
    println(fish)
}

文字列操作

val numberOfFish = 5
val numberOfPlants = 12
"I have $numberOfFish fish" + " and $numberOfPlants plants"
"I have ${numberOfFish + numberOfPlants} fish and plants"

ヌル可能性

var marbles: Int? = null
var fishFoodTreats = 6
if (fishFoodTreats != null) {
    fishFoodTreats = fishFoodTreats.dec()
}

fishFoodTreats = fishFoodTreats?.dec() ?: 0
val len = s!!.length // throws NullPointerException if s is null
タイトルとURLをコピーしました