Kotlin for Android(3)Kotlinデータ型


Numbers
Kotlin処理数字はある程度Javaに近いが,全く同じではない.たとえば、Javaでintがlong-訳者注に暗黙的に変換できるなど、数値に暗黙的な拡張変換がない場合、字面値が少し異なる場合があります.
Kotlinは、Javaに近い数値を表す内蔵タイプを提供しています.
Type
Bit width
Long
64
Double
64
Float
32
Int
32
Short
16
Byte
8
注意Kotlinでは文字は数字ではありません
2つの数字を比較する
Kotlinには基礎データ型がなく、カプセル化された数字型しかありません.定義された変数ごとに、Kotlinはオブジェクトをカプセル化して、空のポインタが現れないことを保証します.数字型も同じで、2つの数字を比較するとき、比較データサイズと比較2つのオブジェクトが同じかどうかの違いがあります.
   =:  ,         ;

   ==:    ,     ,     ;

   ===:      ,     ,       ,         。
fun main(args: Array) {
    val a: Int = 10000
    println(a === a) // true,   ,      

    //     ,          
    val boxedA: Int? = a
    val anotherBoxedA: Int? = a

    //       ,       ,  10000
    println(boxedA === anotherBoxedA) //  false,   ,       
    println(boxedA == anotherBoxedA) // true,   
}

タイプ変換
異なる表現のため、小さいタイプは大きなタイプのサブタイプではなく、小さいタイプは暗黙的に大きなタイプに変換できません.これは、明示的な変換を行わない場合、Byte型の値をInt変数に割り当てることができないことを意味します.
val b: Byte = 1 // OK,          
val i: Int = b //   

そのtoInt()メソッドを代用することができます.
val b: Byte = 1 // OK,          
val i: Int = b.toInt() // OK

各データ型には、次のような方法があり、他のタイプに変換できます.
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

コンテキスト環境に基づいて正しいデータ型を推定し、数学オペレータが対応するリロードを行うことを前提として、自動タイプ変換を使用する場合もあります.たとえば、次のようになります.
val l = 1L + 3 // Long + Int => Long

演算子
Kotlinは標準的な演算オペレータをサポートし、対応するクラスでメンバー関数として定義(ただし、コンパイラは演算に対して最適化し、関数呼び出しを直接的な演算操作に最適化する).ビット別操作(bitwise operation)では、特別な記号ではなく、名前付き関数を直接使用する.
val x=(1 shl 2)and 0 x 000 FF 000//ビット演算操作(IntまたはLongでのみ使用可能)shl(bits)–signed shift left(Java’s)ushr(bits)–unsigned shift right(Java’s>>>>)and(bits)–bitwise andビットとor(bits)–bitwise orビットまたはxor(bits)-bitwise xorビット異またはinv()-bitwise inversionビット反転
文字
Javaとは異なり、KotlinのCharは直接数字と操作できません.Charは単一引用符でなければなりません.たとえば、普通の文字「0」、「a」などです.
fun check(c: Char) {
    if (c == 1) { //   :     
        // ……
    }
}

文字の文字面の値は一重引用符で囲まれています.「1」.特殊文字は逆スラッシュで変換できます.これらの変換シーケンスはサポートされています.「t」、「b」、「r」、「」、「」、「」、および$です.他の文字を符号化するにはUnicode変換シーケンス構文:'uFF 00」を使用します.文字を明示的にInt数字に変換できます.
fun decimalDigitValue(c: Char): Int {
    if (c !in '0'..'9')
        throw IllegalArgumentException("Out of range")
    return c.toInt() - '0'.toInt() //        
}

ブール
ブールはBooleanタイプで表され、trueとfalseの2つの値があります.空の参照ブールが必要な場合は箱詰めされます.内蔵のブール演算は次のとおりです.
  • |–ショートロジックまたは
  • &–短絡論理と
  • !-論理非
  • はいれつ
    配列はKotlinでArrayクラスを使用して表されます.getとset関数(演算子のリロード規則に従って[])とsize属性、および他の有用なメンバー関数を定義するので、配列の対応するビットの値を下付きで簡単に取得または設定できます.配列の作成には、関数arrayOf()を使用する2つの方法があります.;もう1つのオプションは、配列サイズと関数パラメータを受け入れるファクトリ関数です.パラメータとして使用される関数は、指定されたインデックスの各要素の初期値を返すことができます.もう1つはarrayOfNullsを使用して、データが空の配列を作成することです.次のように、3つの配列を作成します.
    //Array<String>    ,arrayOf          
    var a1: Array<String> = arrayOf("data1", "data2")
    //      Array<String>      ["0", "1", "4", "9", "16"]
    val asc = Array(5, { i -> (i * i).toString() })
    //        、        ,       
    var a3 = arrayOfNulls<String>(10)
    
     //      
        println(a1[0])
        println(a2[1]) 

    クラスArrayのほかに、ByteArray、ShortArray、IntArrayがあり、それぞれのタイプの配列を表すために使用され、梱包作業を省くため、効率が高く、Arrayと同じように使用されています.
    val x: IntArray = intArrayOf(1, 2, 3)
    x[0] = x[1] + x[2]

    文字列
    Javaと同様にStringは変更できます.カッコ[]構文は文字列の文字を簡単に取得したり、forループで遍歴したりすることができます.
    for (c in str) {
        println(c)
    }

    Kotlinでは、3つの引用符「」が拡張された文字列がサポートされています.たとえば、次のような複数行の文字列がサポートされています.
        val text = """
             
             
        """
        println(text)   //          
    
      :
    ---------------------
    
             
             
    
    ---------------------

    StringはtrimMargin()メソッドで余分な空白を削除できます.
        val text = """
        |     
        |     
        |     
        |     
        """.trimMargin()
        println(text)    //        
    
      :
    ---------------------
         
         
         
         
    ---------------------

    デフォルト|は境界接頭辞として使用されますが、trimMargin(">")などの他の文字を選択してパラメータとして入力できます.
    文字列テンプレート
    文字列にはテンプレート式、すなわち一部のセグメントコードが含まれ、値を求めて文字列にマージされます.テンプレート式はドル($)で始まり、簡単な名前で構成されています.
        val i = 10
        val s = "i = $i" //       "i = 10"

    またはカッコで拡大した式:
    val s = "abc"
    val str = "$s.length is ${s.length}" //       "abc.length is 3"

    原生文字列とエスケープ文字列の内部にはテンプレートがサポートされています.原生文字列に$文字を表す必要がある場合(反スラッシュエスケープはサポートされていません)、次の構文を使用します.
        val price = """
        ${'$'}9.99
        """
        println(price)  //       $9.99