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

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 
主站蜘蛛池模板: 贡嘎县| 富裕县| 柳州市| 天柱县| 枝江市| 灵武市| 如皋市| 修文县| 治县。| 黄骅市| 宾阳县| 巴塘县| 南京市| 濉溪县| 琼海市| 安顺市| 靖州| 将乐县| 岳池县| 丁青县| 和龙市| 灌云县| 奉化市| 龙游县| 四子王旗| 宁海县| 磐石市| 辽中县| 滨海县| 晋城| 河津市| 米易县| 新野县| 亳州市| 财经| 德令哈市| 循化| 东丽区| 西吉县| 汕头市| 五大连池市|