Kotlinとは?
- 2011年にJetBrains社が公開したプログラミング言語
- 2017年にGoogleがAndroid開発の公式の言語に追加
- JVM系言語
- オブジェクト指向言語
- モダンな言語
基本構文
画面出力・四則演算・文字列結合
lesson1.kt
fun main(){
//画面出力
println(100)
println("Hello")
println("Hello/nWorld")
//四則演算
println(10 + 2)
println(10 - 2)
println(10 * 2)
println(10 / 2)
println(10 % 2)
//文字列結合
println("Hello + World")
}
変数・定数
lesson2.kt
fun main(){
//変数
var num = 10
println("num = $num")
println(num::class)
var str = "Hello"
println("str = $str")
println(str::class)
num = 20
println(num)
val x = 20
x = 20
}
データ型・型推論
lesson3.kt
fun main(){
//型推論 : 代入する値で自動的にデータ型を識別する
val x = 10
val y = 1.0
val z = "Hello"
println("x = ${x::class}")
println("y = ${y::class}")
println("z = ${z::class}")
//整数
val num1:Int = 10 //32bit
val num2:Long = 10 //64bit
val num3:Short = 10 //16bit
val num4:Byte = 10 //8bit
//小数
val num5:Float = 1.0f //32bit
val num6:Double = 1.0 //64bit
//整数符号なし
val num: UByte = 127U
//新数表現
val num = 0xF0
val num1 = 0b11110000
//文字列、文字
val str: String = "Hello"
val ch: Char = 'H'
//真偽値
val bool: Boolean = true
//Any
var any: Any = 10
any = "Hello"
}
型変換メソッド
lesson4.kt
fun main(){
val x: Int = 10
val y: Long = x.toLong()
val d: Double = x.toDouble()
val f: Float = d.toFloat()
println(y)
println(d)
println(f)
val dd = 1.6
val i:int = dd.toInt()
println(i)
}
null安全性・null許容型・null非許容型
lesson5.kt
fun main(){
val str: String? = null
// !!
val list: MutableList<String?> = mutableListOf(10, 20, 30)
val num: Int? = list.min()
// スマートキャスト
if(num != null){
println(num * 2)
}
// !!
val num2: Int = num!!
println(num2 * 2)
}
配列
lesson6.kt
fun main(){
//配列
val array:Array<Int> = arrayOf<Int>(10, 20, 30)
println(array[0])
println(array[1])
println(array[2])
val array1 : intArray = intArray(10, 20, 30)
println(array1[0])
println(array1[1])
println(array1[2])
val array2 = doubleArrayOf(10.0, 20.0, 30.0)
println(array2[0])
println(array2[1])
println(array2[2])
val array3: Array<String?> = arrayOfNulls<String>(3)
array3.foreach { println(it) }
}
コレクション
- コレクション : 複数の値(要素)をまとめて扱う
- 可変長(配列は固定長)
リスト
- リスト : 順番の概念を持つ
lesson7.kt
fun main(){
val list: MutableList<Int> = mutableListOf(10, 20, 30)
println(list[0])
//変更
list[0] = 100
println(list[0])
//追加
list.add(40)
println(list)
list.add(0, 500)
println(list)
//削除
list.removeAt(0)
println(list)
list.removeAt(100)
println(list)
}
セット
- セット : 順番の概念がなく、要素の重複を許可しない
lesson8.kt
fun main(){
val set: MutableSet<Int> = mutableSetOf(10, 20, 30)
println(set)
//追加
set.add(40)
println(set)
//削除
set.remove(10)
println(set)
}
マップ
- マップ : キーと要素をセットで管理する・キーの重複を許可しない
lesson9.kt
fun main(){
val map:MutableMap<String, String> = mutableMapOf<String, String>(
"orange" to "みかん",
"apple" to "りんご",
"peach" to "もも"
)
//変更
map["apple"] = "りんご"
println(map)
//追加
map["banana"] = "バナナ"
println(map)
//削除
map.remove("peach")
println(map)
}
制御フロー
if式
lesson10.kt
fun main(){
//条件分岐
if(true){
println(true)
} else {
println(false)
}
val num = 120
if(num > 100){
println("num > 100")
} else if(num > 50){
println("num > 50")
} else {
println("num == 100")
}
}
when式
lesson11.kt
fun main(){
val num = 5
when(num) {
5 -> println("num = 5")
6, 7 -> println("num = 6 or 7")
in 8..10 -> println("num between 8 ~ 10")
!in 11..15 -> println("num not between 11 and 15")
else -> {
println("その他")
println("当てはまりません")
}
}
val num: Any = 50.0
when(num){
is Int -> println("Int")
is Double -> println("Double")
is String -> println("String")
}
when str:Any = when(num){
5 -> "num = 5"
6, 7 -> "num = 6 or 7"
in 8..10 -> "num between 8 ~ 10"
!in 11..15 -> "num not between 11 and 15"
else -> {
println("その他")
"当てはまりません"
}
}
println(str)
}
whenループ・do-whileループ
lesson12.kt