- 在Android开发中的特性
- 代码少,可读性强
- 可与JAVA进行交互
- 支持多平台
基本数据类型
- Kotlin中的说有数据都是以对象的形式存在的,整数类型有四种分别为Byte(1), Short(2), Int(4), Long(8)
- 定义整型数据时不指定类型且在Int的范围内则默认为Int类,超出最大值则推断为Long。也可以强制指定类型,比如val oneLong = 1L 或 val oneLong: Long = 1
浮点型分为float和double,采用IEEE 754标准,默认为double

Kotlin中没有隐式转换,以下代码可以说明,需要类型转换时必须用函数强制转换,比如val b: Byte = 1 val i1: Int = b.toInt()。很多时候并不需要显示转换,Kotlin存在自动类型推断,如val L=1L+3, L为Long。
fun main() {
fun printDouble(d: Double) { print(d) }
val i = 1
val d = 1.0
val f = 1.0f
printDouble(d)
// printDouble(i) // Error: Type mismatch
// printDouble(f) // Error: Type mismatch
}
- Kotlin不支持8进制。为了可读性可以加下划线,如val oneMillion =1_000_000
- 运算
位运算: 位运算列表如下

字符串
Kotlin中的字符串类型与JAVA类似也是不可变的,字符串模板用符号$表示,如下代码:
`val s ="abc" ; println("$s.length is ${s.length}") ; 结果为 “abc.length is 3”`
数组
- 数组的创建: arrayOf(Element1, Elwment2 , ……); arrayOfNulls(Size); Array(size) {i -> operation}.
- Kotlin中的数组是invariant的也就是说不可以把Array
转换成 Array - 原生类型数组: 原生数组无装箱开销,如ByteArray, ShortArray, IntArray等, 这些class没有继承Array类但是有着同样的方法和属性比如IntArray(), intArrayOf()等
Smart Cast
如下代码所示,Kotlin会自动把x映射成String类型
fun demo(x: Any) { if (x is String) { print(x.length) // x is automatically cast to String } }如果在运算符&&或者||的右侧也是可以自动映射的,如下代码所示 ```kotlin if (x !is String || x.length == 0) return
if (x is String && x.length > 0) { print(x.length) // x is automatically cast to String }
- 在when和while表达式中
```kotlin
when (x) {
is Int -> print(x + 1)
is String -> print(x.length + 1)
is IntArray -> print(x.sum())
}
- //Todo: 一些不安全情况的总结
- 控制流
if表达式: 在Kotlin中if表达式可以有返回值,所以无需三元预算符,如下代码所示:
fun largeNumber(n1: Int, n2: Int) = if(n1>=n2) n1 else n2when表达式: 匹配值 -> {执行逻辑} 类似于C语言中的switch,示例代码如下:
when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { // Note the block print("x is neither 1 nor 2") } }循环:for loops:
for (item in collection) {action}; while ; do-while- Range : 1..10 [1-10], 1 until 10, 10 downTo 1 step 2 , Range和for结合使用如下所示:
for (i in 1..3) { println(i) } for (i in 6 downTo 0 step 2) { println(i) }
ButtonItem shareItem = new ButtonItem("分享", new ButtonItem.OnClickListener() { @Override public void onClick() { onShareClicked(); } }); List<ButtonItem> items = new ArrayList<>(); items.add(shareItem); DialogManager dialogManager = new DialogManager(getContext()); dialogManager.showCommonPopupDialog(null,items,"取消");
