■文字列 リテラル 段落
//\nで改行してる。
var a = "こんにちは。\nよろしくです。"
//こんにちは。
//よろしくです。
//"""を3つ付けて段落を変えると表記も段落が変わる。
var b = """こんにちは。
よろしくです。"""
//こんにちは。
// よろしくです。
ご覧の通り"""3つの場合はなんかずれてる。
■解決法
.trimMargin()を使うとちゃんと並ぶ。
var b = """こんにちは。
|よろしくです。""".trimMargin()
//こんにちは。
//よろしくです。
■nullとnull許容型
null 値がない事
//非null型
//fooと言う変数はデフォルトの型なのでnullを禁止してエラーななっています。
var foo: String = "foo"
foo = null //エラー
//Nullable型
//nullを許容するには型に?をつける。
var foo2: String2 = "foo"
foo = null //エラーでない
■同値確認(==) 同じ値かどうか
■同一確認(===) 同じオブジェクトかどうか
var a: Int = 10000
var b: Int = a
var c: Int? = a
println(a==b) //結果 true
println(a===b) //結果 true
println(a==c) //結果 true
println(a===c) //結果 false
var foo1: String? = "foo"
var foo2: String = foo1 //エラー 非null型にNullable型を入れれない
var a1: String? = "a"
var a2: Any = a1 //エラー Anyでも非null型なのでエラー
var a3: Any? = a1 //これは通る
■型変換
型を変えれる
//サフィックスで変更1.2がfをつける事によってFloat型に
var a: Float = 1.2f
//bはInt型だがtoString()でString型に変更
var b: Int = 1
a.toString()
//色々ある。 toLong() toFloat() 等 好きな物に変更できる。
■配列とコレクション
■配列
var a = arrayOf(1,2,3)
//Int型限定の配列
var b = intArrayOf(1,2,3)
//全部nullの配列 文字型のnull配列
var c: Arra<String?> = arrayOfNulls(3)
//結果[null,null.null]
//ラムダ式の配列 index番号3つ用意0.1.2これをiとしてi*2をして配列になる。
var b = Arra(3, {i -> i * 2})
//結果 [0,2,4]
■コレクション list set map 中身を後から変更できない 読み取り専用
//ただのList 配列と同じ表記
var list = listOf("あ","い","う")
println(list)
//結果 [あ,い,う]
//setは重複した値を飛ばして表示する。
var set = setOf("A","B","A","C","B","D")
println(set)
//結果 [A,B,C,D]
//map型 他の言語で言う辞書型と同じ
var map = mapOf("First" to 1, "Second" to 2, "Third" to 3)
println(map)
//結果 {First=1, Second=2, Third=3}
■mutableコレクション
mutableをつける事によって後から変更可能になる。
//mutableを付けて変更可能になる。
var list = mutableListOf(1,2,3)
list[2] = 4
println(list)
//結果 [1,2,4]
var list1 = mutableListOf(1,2,3)
//普通のList<Int>これは普通のlistコレクションの配列の型を表している。
//listtコレクションの配列にmutableListコレクションを代入
var list2: List<Int> = list1
//値の変更はmutablelistの配列で変更
list1[2] = 4
//変更された配列がlist2に入る。
println(list2)
//結果 [1,2,4]
■範囲演算子
「m..n」というように書く m~nの範囲を表現する事ができる。
1..20で1から20の数字の間にはiの10が含まれているから結果は10になる。
val i = 10
println(i in 1..20)
//結果 true
■for文を使用した時の範囲演算子
for(i in 1..3) {
print(i)
}
//結果 1.2.3
// untilを使うとこの場合3を含めない最後の値を含めない感じ
for(i in 1 until 3) {
print(i)
}
// 結果 1.2
//逆にインクリメントをダウンして表示する downTo
for(i in 3 downTo 1) {
print(i)
}
//結果 3.2.1
//step指定した値分飛ばす(範囲演算子と使う)
for(i in 1..10 step 3) {
print(i)
}
//結果 1.4.7,10