Step into Kotlin - 02 - 数据类型
2015-06-26 12:19
399 查看
目录
Basic Types
概要
Numbers
分类
Literal Constants
Representation
Explicit Conversions
语法
字面量
为什么不支持自动向上转型
Operations
Characters
Booleans
String
Usage
Templates
摘要
显示转换,String templates
Kotlin 中字符不是 Number
Longs are tagged by a capital L: 123L
Hexadecimals: 0x0F
Binaries: 0b00001011
Long 结尾不能为小写的
Kotlin 不支持 8 进制字面常量
例
假设支持向上转型,那么 a 就可以赋值给 b,这样
Kotlin 通过强制使用类型转换,使编译时就能发现这种错误,从而提高了程序的安全性。
常用操作
shl(bits) – 有符号左移 (Java’s <<)
shr(bits) – 有符号右移 (Java’s >>)
ushr(bits) – 无符号右移 (Java’s >>>)
and(bits) – 按位与
or(bits) – 按位或
xor(bits) – 按位异或
inv() – 按位取反
例
Basic Types
概要
Numbers
分类
Literal Constants
Representation
Explicit Conversions
语法
字面量
为什么不支持自动向上转型
Operations
Characters
Booleans
String
Usage
Templates
摘要
显示转换,String templates
Basic Types
概要
Kotlin 中一切皆是对象Numbers
分类
与 Java 相似,但是 Kotlin 没有自动向上转型( 如 Java 中的 int 可以自动向上转型为 long )。Type | Bitwidth |
---|---|
Double | 64 |
Float | 32 |
Long | 64 |
Int | 32 |
Short | 16 |
Byte | 8 |
Literal Constants
Decimals: 123Longs are tagged by a capital L: 123L
Hexadecimals: 0x0F
Binaries: 0b00001011
Long 结尾不能为小写的
l
Kotlin 不支持 8 进制字面常量
Representation
数字的装箱操作不会保持相同性,但是会保持相等性val a: Int = 10000 val boxedA: Int? = a val anotherBoxedA: Int? = a println(a identityEquals a) // Prints 'true' println(boxedA identityEquals anotherBoxedA) // !!!Prints 'false'!!! println(a == a) // Prints 'true' println(boxedA == anotherBoxedA) // Prints 'true'
Explicit Conversions
语法
所有 Number 类型都支持类似 toByte(),toInt() 这样的显示转换的方法。例
val a:Int = 1 // val b:Long = a 错误,不支持自动向上转型 val b:Long = a.toInt()
字面量
字面量可以根据上下文推导类型,所以可以不用显示转换val a:Byte = 1 val b:Long = 1 b = 1.toLong() + 2 //Long + Int => Long
为什么不支持自动向上转型
因为 Kotlin 最终会被编译为 Java 代码,比如说val a:Int = 2 // java.lang.Integer a = 2 // 如果支持向上转型 val b:Long = a // java.lang.Long b = a
假设支持向上转型,那么 a 就可以赋值给 b,这样
a==b表达式会返回 false,因为两者类型不同,而这种错误只有在运行时才会发现。
Kotlin 通过强制使用类型转换,使编译时就能发现这种错误,从而提高了程序的安全性。
Operations
Kotlin 支持标准的操作符,并且在对应的类上定义为成员方法。常用操作
shl(bits) – 有符号左移 (Java’s <<)
shr(bits) – 有符号右移 (Java’s >>)
ushr(bits) – 无符号右移 (Java’s >>>)
and(bits) – 按位与
or(bits) – 按位或
xor(bits) – 按位异或
inv() – 按位取反
例
val b = 1 shl 2 //4
Characters
Char 使用单引号''来声明,不能直接当做数字来使用,需要使用 toInt()等方法
val c: Char = 'a'
Booleans
Boolean 值为true或者
false
val flag: Boolean = true && false
String
Usage
val s = "Hello World" for (x in s) { print(x) // Hello World }
Templates
String templates 可以使用变量值来替换字符串中的值val name = "Peter" val str = "name=$name, $name.length, ${name.length()}" println(str) // name=Peter, Peter.length, 5
相关文章推荐
- Uncaught TypeError: Illegal invocation
- 递归与分治:循环赛日程表
- [SoapUI] 按照 Test Step Type 获取所有满足条件的 Test Step
- Android中Parcelable接口用法
- 学习记录:对maven项目使用命令下载jar包
- 《爱编程,爱c++-十八期-对象》
- Linux touch 命令
- AFNetworking框架的使用
- ADI实验室电路:带抗混叠滤波器的宽带接收机
- SQL SERVER性能分析
- 《中华人民共和国著作权法》
- HBase学习总结(1):HBase的下载与安装
- Android Service创建USB HOST通信
- jquery引用的异常
- 新工作加油
- jQuery实现网站添加高亮突出显示效果的方法
- 在Python中使用zlib模块进行数据压缩的教程
- solr in Action 中文目录
- Java有两种线程分别是用户线程(UserThread)和守护线程(DaemonThread)
- WebApi:自定义筛选器