一、Kotlin的介绍
(一)Kotlin的优势
- 1、全面支持Lambda表达式 ⭐️
- 2、数据类(Data classes)⭐️
- 3、函数字面量和内联函数(Function literals & inline functions)⭐️
- 4、函数扩展(Extension functions)⭐️
- 5、空安全(Null safety)⭐️
- 6、智能转换(Smart casts)⭐️
- 7、字符串模版(String templates)
- 8、主构造函数(Primary constructors)
- 9、类委托(Class delegation)⭐️
- 10、类型推断(Type inference)
- 11、单例(Singletons)
- 12、声明点变量(Declaration-site variance)
- 13、区间表达式(Range expressions)
(二)Kotlin相关官网
1、下载网站
1)Kotlin的官网 https://kotlinlang.org/
以下是开发Kotlin的工具,推荐使用IDEA
2)Jetbrains Idea官网 https://www.jetbrains.com/idea/download/
3)命令行工具 http://kotlinlang.org/docs/tutorials/command-line.html
2、Kotlin学习网站
二、Kotlin的基础
(一)Hello word
所有的新语言都从Hello word 开始,请先记住这种写法
(二)变量的声明和使用:var
程序中的数据都必须通过变量来处里,处里不同的数据,必须使用不同的变量类型
fun main(args: Array<String>) {
// 1、计算机分配了一个空间name,里面存放的是字符串类型的数据,值为“张三”
var name = "张三"
// 2、将name空间重新赋值,值为“李四”
name = "李四"
// 3、name已经是String类型,无法转换为Int类型,所以这样写会报错
name = 8
}
1、在kotlin中通过关键字var
来定义变量
2、var name = “李四”,然后name = 8 编译报错
,因为name变量已经定义为String
类型,就无法自动转换为Int
类型
(三)常见容器类型
不同的数据类型用不同的容器类型保存
Kotlin和Java不同,所有的数据类型都是类对象,而不是关键字
数据类型 | 取值范围 | 存储单位 |
---|---|---|
Byte | 整数-128~127 | 8块存储单位 8bit |
Short | 整数-32768~32767 | 16块存储单位 16bit |
Int | 整数-2147483648~2147483647 | 32块存储单位 32bit |
Long | 整数-9223372036854775808~9223372036854775807 | 64块存储单位 64bit |
Float | 小数,小数点可以精确到6位 | 符号位:1bit,指数位:11bit,尾数位:23bit |
Double | 小数,小数点可以精确到15~16位 | 符号位:1bit,指数位:11bit,尾数位:52bit |
String | 字符串,用""双引号引起来的字符串都可以存储 |
fun main(args: Array<String>) {
var maxByte: Byte = Byte.MAX_VALUE
var minByte: Byte = Byte.MIN_VALUE
println("Byte的最大值:" + maxByte)
println("Byte的最小值:" + minByte)
var maxInt: Int = Int.MAX_VALUE
var minInt: Int = Int.MIN_VALUE
println("Int的最大值:" + maxInt)
println("Int的最小值:" + minInt)
var maxLong: Long = Long.MAX_VALUE
var minLong: Long = Long.MIN_VALUE
println("Long的最大值:" + maxLong)
println("Long的最小值:" + minLong)
// var maxString: String = String.MAX_VALUE String没有取值范围
}
结果打印:
(四)类型推断(Type inference)
Kotlin会通过类型判断自动推断数据类型
案例【1】
自动类型推断为Int
, 再次赋值Long
范围的值,编译报错
fun main(args: Array<String>) {
var i = 18 // 计算机开辟一块整数的存储空间,名字为i
i = 19
i = 9999999999 // i的类型推断为Int, 范围在-2147483648 ~ 2147483647
}
案例【2】
s的类型推断为String
,不可以赋值整数123
fun main(args: Array<String>) {
var s = "haha" // 计算机开辟一块字符串的存储空间,名字为s
s = 123 // s的类型推断为String,不可以赋值整数123
}
(五)显示类型声明
可以通过显示的方式来指定数据类型
1、显示定义为Int
var a:Int = 18
2、显示定义为Long
var b:Long = 9999999999
3、显示定义为String
var c:String =