官术网_书友最值得收藏!

Numbers

Basic Kotlin data types used for numbers are equivalents of Java numeric primitives:

Kotlin, however, handles numbers a little bit differently than Java. The first difference is that there are no implicit conversions for numbers--smaller types are not implicitly converted to bigger types:

    var weight : Int = 12 
    var truckWeight: Long = weight // Error1 

This means that we cannot assign a value of type Int to the Long variable without an explicit conversion. As we said, in Kotlin everything is an object, so we can call the method and explicitly convert the Int type to Long to fix the problem:

    var weight:I nt = 12 
    var truckWeight: Long = weight.toLong() 

At first, this may seem like boilerplate code, but in practice this will allow us to avoid many errors related to number conversion and save a lot of debugging time. This is actually a rare example where Kotlin syntax has more code than Java. The Kotlin standard library supports the following conversion methods for numbers:

  • toByte(): Byte
  • toShort(): Short
  • toInt(): Int
  • toLong(): Long
  • toFloat(): Float
  • toDouble(): Double
  • toChar(): Char

We can, however, explicitly specify a number literal to change the inferred variable type:

    val a: Int = 1 
    val b = a + 1 // Inferred type is Int 
    val b = a + 1L // Inferred type is Long

The second difference between Kotlin and Java with numbers is that number literals are slightly different in some cases. There are the following kinds of literal constants for integral values:

    27 // Decimals by default 
    27L // Longs are tagged by a upper case L suffix 
    0x1B // Hexadecimals are tagged by 0x prefix 
    0b11011 // Binaries are tagged by 0b prefix 

Octal literals are not supported. Kotlin also supports a conventional notation for floating-point numbers:

    27.5 // Inferred type is Double 
    27.5F // Inferred type is Float. Float are tagged by f or F 
主站蜘蛛池模板: 肥城市| 福鼎市| 离岛区| 安义县| 临漳县| 凤庆县| 从化市| 柏乡县| 南澳县| 商水县| 巫山县| 宜兴市| 甘谷县| 定襄县| 台湾省| 永新县| 邮箱| 新建县| 台山市| 驻马店市| 洱源县| 二连浩特市| 新密市| 西林县| 铁力市| 平阳县| 罗江县| 泸水县| 治多县| 泽州县| 莱芜市| 太康县| 沂南县| 宁安市| 永济市| 晋宁县| 鲁山县| 任丘市| 乌什县| 克东县| 孟连|