Kotlinの基本的なデータ型
Kotlinの基本的な数値タイプには、Byte、Short、Int、Long、Float、Doubleなどがあります。Javaとは異なり、文字は数値型ではなく、独立したデータ型です。
の種類 | ビット幅 |
---|---|
ダブル | 64 |
浮く | 32 |
長いです | 64 |
Int | 32 |
ショート | 16 |
バイト | 8 |
リテラル定数
以下は、すべてのタイプのリテラル定数です。
- 10進数:123
- 長整数は大文字のLで終わります:123L
- 16進数は0xで始まります:0x0F
- バイナリベースは0bで始まります:0b00001011
- 注:8進数はサポートしていません
Kotlinは、従来の表記法で浮動小数点値もサポートしています:
- デフォルトの書き込みを2倍にします:
123.5
、123.5e10
- フロートはfまたはFサフィックスを使用します。
123.5f
アンダースコアを使用して、数値定数を読みやすくすることができます
val oneMillion = 1_000_000
2つの数値を比較する
Kotlinには基本的なデータ型はなく、カプセル化された数値型のみがあります。変数を定義するたびに、Kotlinは実際にオブジェクトをカプセル化して、nullポインターがないことを確認します。数値の種類も同じであるため、2つの数値を比較する場合、データのサイズを比較する場合と、2つのオブジェクトが同じであるかどうかを比較する場合には違いがあります。
Kotlinでは、3つの等号===はオブジェクトのアドレスを比較することを意味し、2つの==は2つの値のサイズを比較することを意味します
型変換
表現が異なるため、小さいタイプは大きいタイプのサブタイプではなく、小さいタイプを暗黙的に大きいタイプに変換することはできません。これは、明示的な変換なしにByte値をInt変数に割り当てることができないことを意味します
各データ型には次のメソッドがあり、他の型に変換できます
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
場合によっては、コンテキストに応じて正しいデータ型を推測でき、それに応じて数学演算子がオーバーロードされる場合は、自動型変換を使用することもできます。
val l = 1L + 3 // Long + Int => Long
ビット演算子
Int型とLong型の場合、それぞれ使用できる一連のビット演算子もあります。
shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 无符号右移位 (Java’s >>>)
and(bits) – 与
or(bits) – 或
xor(bits) – 异或
inv() – 反向
キャラクター
Javaとは異なり、KotlinのCharは数字で直接操作することはできません。Charは一重引用符で囲む必要があります。通常の文字「0」、「a」など
文字リテラルは一重引用符で囲まれています:「1」。特殊文字は円記号でエスケープできます。次のエスケープシーケンスをサポートします:\ t、\ b、\ n、\ r、\ '、\ "、\\、および\ $。他の文字をエンコードするには、Unicodeエスケープシーケンス構文を使用します:' \ uFF00 '
文字を明示的に整数に変換できます
fun decimalDigitValue(c: Char): Int {
if (c !in '0'..'9')
throw IllegalArgumentException("Out of range")
return c.toInt() - '0'.toInt() // 显式转换为数字
}
null許容の引用符が必要な場合、数字や文字などはボックスで囲まれます。ボクシングの操作はアイデンティティを保持しません
ブール値
ブール値はブール型で表され、trueとfalseの2つの値があります。
ヌル許容参照ブール値は、必要に応じてボックス化されます。
組み込みのブール演算は次のとおりです。
|| – 短路逻辑或
&& – 短路逻辑与
! - 逻辑非
アレイ
配列はクラスArrayで実装され、sizeプロパティとgetおよびsetメソッドもあります。getメソッドとsetメソッドは[]でオーバーロードされているため、配列の対応する位置の値を簡単に取得または設定できます。添え字。
配列を作成する方法は2つあります。1つは関数arrayOf()を使用する方法で、もう1つはファクトリ関数を使用する方法です。以下に示すように、2つの方法で2つのアレイを作成しました
fun main(args: Array<String>) {
//[1,2,3]
val a = arrayOf(1, 2, 3)
//[0,2,4]
val b = Array(3, { i -> (i * 2) })
//读取数组内容
println(a[0]) // 输出结果:1
println(b[1]) // 输出结果:2
}
上記のように、[]演算子は、メンバー関数get()およびset()の呼び出しを表します。
注:Javaとは異なり、Kotlinの配列は不変です。
クラスArrayに加えて、ByteArray、ShortArray、IntArrayがあり、これらはさまざまなタイプの配列を表すために使用され、ボクシング操作の必要性を排除するため、より効率的であり、その使用法はArrayと同じです。
ストリング
Javaと同様に、Stringは不変です。角括弧[]構文は、文字列内の文字を取得するのに非常に便利です。また、forループを通過することもできます。
for (c in str) {
println(c)
}
Kotlinは、3つの引用符 "" "を含む文字列と、次のような複数行の文字列をサポートします。
fun main(args: Array<String>) {
val text = """
多行字符串
多行字符串
"""
println(text) // 输出有一些前置空格
}
文字列をtrimMargin()メソッドを使用して、余分な空白を削除できます
デフォルトの|が境界プレフィックスとして使用されますが、他の文字を選択して、trimMargin( ">")などのパラメーターとして渡すことができます。
文字列テンプレート
文字列には、テンプレート式、つまり、評価されて結果が文字列にマージされるいくつかの小さなコードを含めることができます。テンプレート式はドル記号($)で始まり、単純な名前で構成されます。
または中括弧で囲まれた式:
fun main(args: Array<String>) {
val s = "runoob"
val str = "$s.length is ${s.length}" // 求值结果为 "runoob.length is 6"
println(str)
}
ネイティブ文字列とエスケープ文字列はどちらも、内部でテンプレートをサポートしています。リテラルの$文字をネイティブ文字列で表す必要がある場合(バックスラッシュのエスケープはサポートされていません)、次の構文を使用できます。
fun main(args: Array<String>) {
val price = """
${'$'}9.99
"""
println(price) // 求值结果为 $9.99
}