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

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 
主站蜘蛛池模板: 聂荣县| 常州市| 汶川县| 九龙坡区| 汉中市| 沽源县| 厦门市| 淮阳县| 随州市| 常宁市| 潮州市| 广汉市| 富源县| 南投县| 辽宁省| 鲜城| 灵丘县| 门头沟区| 蓬溪县| 九龙县| 凤台县| 长治市| 九寨沟县| 杨浦区| 玉门市| 思茅市| 防城港市| 额济纳旗| 仁布县| 原阳县| 黄平县| 微博| 利津县| 积石山| 清水河县| 垦利县| 沂源县| 古蔺县| 格尔木市| 周口市| 麻城市|