- Android Development with Kotlin
- Marcin Moskala Igor Wojda
- 320字
- 2021-07-02 18:48:36
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
- Redis Applied Design Patterns
- SQL for Data Analytics
- KnockoutJS Starter
- Apache Mahout Clustering Designs
- Learning OpenStack Networking(Neutron)(Second Edition)
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(1)
- Microsoft Azure Storage Essentials
- OpenResty完全開發指南:構建百萬級別并發的Web應用
- Learning jQuery(Fourth Edition)
- AutoCAD 2009實訓指導
- 智能手機故障檢測與維修從入門到精通
- 黑莓(BlackBerry)開發從入門到精通
- Maven for Eclipse
- Node.js實戰:分布式系統中的后端服務開發
- C語言編程魔法書:基于C11標準