美文网首页
Kotlin 学习一

Kotlin 学习一

作者: 攻城狮xhb | 来源:发表于2017-06-05 16:10 被阅读0次

一: val (常量) 和 var (变量)

① val 声明常量,只可以赋值一次。 var 声明变量,可以多次赋值。
② 尽量多使用 val(常量),能不使用var 就不使用 var。
③ Java 使变量不可变 final,只要可能,在Kotlin中首选时不变值。
④ 程序中使用不可变的变量,带来很多益处,如:可预测的行为和线程安全。
⑤ Kotlin中有趣的是大部分情况你不需要说明使用对象的类型,编译器就能推断它。

 如: var x = 7     或者    var x = "hello world"

二: Kotlin中,所有都是对象

① 没有基本类型,没有void。如果有时没有返回值,实际时返回Unit对象。大多数情 况下,Uint可以省略,但是它确实存在的,被隐藏了。
② Kotlin 中的类型都是对 Java 基本类型的封装,因为 Kotlin 中不存在基本数据类型,所以不存在装箱拆箱的问题。
③ 需要注意的一点是,Kotlin 没有自动类型转换。隐式类型转换只发生表达式运算里,如果是传参的话必须显式转换。
④ Kotlin 不支持八进制数字的表示方法。

三: 空安全

在Kotlin中,类型系统将可空类型和不可空类型进行了区分,例如,String为不可空类型,String?为可空类型,如果将不可空类型赋值为null将会编译不通过。

var a: String = "abc"
a = null // compilation error
var b: String? = "abc"
b = null // compilation success

对于不可空类型,可以直接调用它的成员变量或者函数,但是对应可空类型,直接调用成员变量或者函数将会编译不通过,相当于直接在语法层面解决做出了限制。

var a: String? = "abc"
val b = a.length  //compilation error

上面的代码按理说没什么问题,但是编译不通过,就是因为String为可控类型,编译器不让它直接调用成员变量或者函数,对于可能类型,如果希望调用它的成员变量或者函数就必须进行判断才行,否则编译器是不会通过的,这就是Kotlin解决空指针异常的方法之道,它会最大限度的要求程序员去避免空指针异常。
参考博客: http://blog.csdn.net/hp910315/article/details/50790681

四:Kotlin 的基础数据类型

① 数字类型、字符类型、字符串类型和布尔类型。
② Char 类型并不是一个数字,它是一个真正的“字符”。

问题一: 编译不通过 需要a.toLong()

val a: Int? = 1      
val b: Long? = a   
print(a == b)     

问题二: 字符串可以包含模板表达式
模板表达式以$开头外加一个变量名或者一个用大括号包裹的常规表达式

val s = "abc"
val str = "$s.length is ${s.length}" // 计算得到 "abc.length is 3"

相关文章

网友评论

      本文标题:Kotlin 学习一

      本文链接:https://www.haomeiwen.com/subject/ggnifxtx.html