Kotlin文法1
6768 ワード
1.定数と変数
Kotlinでは、
Kotlinは、宣言
2.データ型
2.1整数
kotlinは4つの整数タイプを提供します.Byteは8ビット整数 を表すShort表示16ビット整数 Int 32ビット整数 Long表示64ビット整数 数値定数のフォント値は次のとおりです.十進法:123 16進0 xで始まる バイナリ0 bで始まる注意:8進法はサポートされていません
アンダースコアを使用すると、数値定数をより読みやすくすることができます.
2.2浮動小数点数
kotlinは2つの浮動小数点タイプを提供しますDouble表示64ビット浮動小数点タイプ Floatは32ビット浮動小数点タイプ を表す
2.3明示的な変換
kotlinの小さいタイプは、暗黙的に大きなタイプに変換できません.これは,明示的な変換を行わずにByte型値をInt変数に割り当てることができないことを意味する.
数値を拡張するために明示的に変換できます
各数値タイプは、次の変換をサポートします. toByte(): Byte toShort(): Short toInt(): Int toLong(): Long toFloat(): Float toDouble(): Double toChar(): Char
2.4文字タイプ
文字は
2.5ブールタイプ
ブールは
2.6文字列
文字列は
文字列にはテンプレート式が含まれ、値を求めて文字列にマージされます.テンプレート式はドル($)で始まり、簡単な名前で構成されています.
原生文字列とエスケープ文字列の内部にはテンプレートがサポートされています.原生文字列に$文字を表す必要がある場合(反スラッシュエスケープはサポートされていません)、次の構文を使用します.
2.6空のセキュリティ
Kotlinでは、タイプシステムは、null(空参照可能)を受け入れるか、空参照でないかを区別します.たとえば、Stringタイプの通常の変数はnullを収容できません.
NULLを許可する場合は、変数をNULL文字列として宣言し、
現在、aのメソッドを呼び出したり、そのプロパティにアクセスしたりすると、
しかし、bの同じプロパティにアクセスしたい場合は、これは安全ではありません.コンパイラはエラーを報告します.
変数bにアクセスするには、以下の方法を使用します.条件でnullをチェックします.bがnullであるかどうかを明示的にチェックすると、コンパイラは実行したチェックの情報を追跡し、if内部でlengthを呼び出すことができます. セキュリティコールオペレータを使用
bが空でない場合は、b.lengthを返します.そうでない場合はnullを返します.この式のタイプはIntです.Elvisオペレータを使用
4.
2.7安全なタイプ変換
オブジェクトがターゲット・タイプでない場合、通常のタイプ変換によってClassCastExceptionが発生する可能性があります.もう1つの選択肢は、安全なタイプ変換を使用することです.変換が失敗した場合はnullを返します.
2.8配列
配列はKotlinで
ライブラリ関数arrayOf()を使用して配列を作成し、要素値を渡すことができます.または、ライブラリ関数arrayOfNulls()を使用して、指定したサイズの要素が空の配列を作成できます.
3.制御フロー
3.1 if式
Kotlinでは、ifは式であり、値が返されます.したがって、通常のifがこの役割を果たすため、3元演算子(条件?そして:そうでなければ)は必要ありません.
一般的な使い方
ifのブランチはコードブロックであり、最後の式はブロックの値として使用されます.
文ではなくifを式として使用する場合(たとえば、その値を返すか、変数に割り当てる)、elseブランチが必要です.
3.2 when式
他のブランチが条件を満たさない場合はelseブランチが評価されます.whenが式として使用される場合は、コンパイラがすべての可能性が上書きされていることを検出できない限り、elseブランチが必要です.
複数のブランチを同じ方法で処理する必要がある場合は、複数のブランチ条件をカンマで区切ることができます.
定数だけでなく任意の式を分岐条件+として使用できます.
また、(in)または(!in)の区間または集合に値を検出することもできます.
3.3 Forサイクル
forループは、反復器(iterator)を提供する任意のオブジェクトを巡回することができます.構文は次のとおりです.
3.4 whileサイクル
同Java
3.5 do...while
同Java
3.6 breakとcontinue文
同Java
Kotlinでは、
val
を使用して定数を宣言し、var
を使用して変数を宣言します.Kotlinは、宣言
val a = 100
のような自動タイプ推定の特性を有し、aのタイプがIntであることを自動的に推定するので、タイプの宣言を省略することができます.もちろん、変数のタイプを明示的に宣言することもできます.例えば、val a:Int = 100
は、:Type
の形式で変数名の後に続くことができます.変数を宣言するときに初期化操作を行わないと、コンパイラは変数のタイプを推定できません.この場合、明示的な宣言タイプを使用する必要があります. //
val a: Int = 1 //
val b = 2 // `Int`
val c: Int //
c = 3 //
//
var x = 5 // `Int`
x += 1
2.データ型
2.1整数
kotlinは4つの整数タイプを提供します.
val a:Int = 123
val b:Long = 0b11
val c = 0xA
println("a=$a,b=$b,c=$c")//a=123,b=3,c=10
アンダースコアを使用すると、数値定数をより読みやすくすることができます.
val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010
2.2浮動小数点数
kotlinは2つの浮動小数点タイプを提供します
val a:Double = 123.5e10
val b:Float = 123.5f
print("a=$a,b=$b")//a=1.235E12,b=123.5
2.3明示的な変換
kotlinの小さいタイプは、暗黙的に大きなタイプに変換できません.これは,明示的な変換を行わずにByte型値をInt変数に割り当てることができないことを意味する.
val b: Byte = 1 // OK,
val i: Int = b //
数値を拡張するために明示的に変換できます
val b: Byte = 1 // OK,
val i: Int = b.toInt()
各数値タイプは、次の変換をサポートします.
2.4文字タイプ
文字は
Char
タイプで表示2.5ブールタイプ
ブールは
Boolean
タイプで表され、true
とfalse
の2つの値があります.2.6文字列
文字列は
String
タイプで表されます.文字列は可変ではありません.文字列の要素文字は、インデックス演算子を使用してアクセスできます:s[i].forで反復文字列をループできます. val a = "Hello World!"
println("${a[4]}")//o
for (c in a){
println("$c")
}
は、3つの引用符("""""")で囲まれており、内部にはエスケープがなく、改行やその他の文字を含めることができます. val text = """
for (c in "foo")
print(c)
"""
println("$text")
文字列にはテンプレート式が含まれ、値を求めて文字列にマージされます.テンプレート式はドル($)で始まり、簡単な名前で構成されています.
val i = 10
val s = "i = $i" // "i = 10"
val str = "$s.length is ${s.length}" // "i = 10.length is 6"
println("$str")
原生文字列とエスケープ文字列の内部にはテンプレートがサポートされています.原生文字列に$文字を表す必要がある場合(反スラッシュエスケープはサポートされていません)、次の構文を使用します.
val price = """
${'$'}9.99
"""
2.6空のセキュリティ
Kotlinでは、タイプシステムは、null(空参照可能)を受け入れるか、空参照でないかを区別します.たとえば、Stringタイプの通常の変数はnullを収容できません.
var a: String = "abc"
a = null //
NULLを許可する場合は、変数をNULL文字列として宣言し、
String?
と書きます.var b: String? = "abc"
b = null // ok
現在、aのメソッドを呼び出したり、そのプロパティにアクセスしたりすると、
NPE
が発生しないことを保証し、安心して使用できます.val l = a.length
しかし、bの同じプロパティにアクセスしたい場合は、これは安全ではありません.コンパイラはエラーを報告します.
val l = b.length // : “b”
変数bにアクセスするには、以下の方法を使用します.
if (b != null && b.length > 0) {
print("String of length ${b.length}")
} else {
print("Empty string")
}
?
b?.length
bが空でない場合は、b.lengthを返します.そうでない場合はnullを返します.この式のタイプはIntです.
?:
左側の式が空でない場合、elvisオペレータは左側の式を返します.そうでない場合、右側の式を返します.左側が空の場合、右側の式は評価されません.val l = b?.length ?: -1
4.
!!
オペレータb!!
を使用します.bが空でない場合、空でないb値が返されます.そうでない場合、NPE異常が放出されます.val l = b!!.length
2.7安全なタイプ変換
オブジェクトがターゲット・タイプでない場合、通常のタイプ変換によってClassCastExceptionが発生する可能性があります.もう1つの選択肢は、安全なタイプ変換を使用することです.変換が失敗した場合はnullを返します.
val aInt: Int? = a as? Int
2.8配列
配列はKotlinで
Array
クラスで表される.ライブラリ関数arrayOf()を使用して配列を作成し、要素値を渡すことができます.または、ライブラリ関数arrayOfNulls()を使用して、指定したサイズの要素が空の配列を作成できます.
3.制御フロー
3.1 if式
Kotlinでは、ifは式であり、値が返されます.したがって、通常のifがこの役割を果たすため、3元演算子(条件?そして:そうでなければ)は必要ありません.
//
val max = if (a > b) a else b
一般的な使い方
//
var max = a
if (a < b) max = b
// if...else...
var max: Int
if (a > b) {
max = a
} else {
max = b
}
ifのブランチはコードブロックであり、最後の式はブロックの値として使用されます.
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
文ではなくifを式として使用する場合(たとえば、その値を返すか、変数に割り当てる)、elseブランチが必要です.
3.2 when式
when
Javaにおけるswitch
のように使用されます.whenは、あるブランチが条件を満たすまで、そのパラメータをすべてのブランチ条件と順番に比較します.whenは、式としても文としても使用できます.式として使用される場合、条件を満たすブランチの値は式全体の値であり、文として使用される場合、個別のブランチは無視されますの値です.(ifのように、各ブランチはブロック内の最後の式の値であるコードブロックであってもよい).他のブランチが条件を満たさない場合はelseブランチが評価されます.whenが式として使用される場合は、コンパイラがすべての可能性が上書きされていることを検出できない限り、elseブランチが必要です.
var x = 0
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { //
print("x is neither 1 nor 2")
}
}
複数のブランチを同じ方法で処理する必要がある場合は、複数のブランチ条件をカンマで区切ることができます.
var x = 0
when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}
定数だけでなく任意の式を分岐条件+として使用できます.
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
また、(in)または(!in)の区間または集合に値を検出することもできます.
var x = 30
when (x) {
in 1..10 -> print("x is in the range")
!in 10..20 -> print("x is outside the range") //
else -> print("none of the above")
}
//x is outside the range
3.3 Forサイクル
forループは、反復器(iterator)を提供する任意のオブジェクトを巡回することができます.構文は次のとおりです.
for (item in collection) print(item)
3.4 whileサイクル
同Java
3.5 do...while
同Java
3.6 breakとcontinue文
同Java