该系列的博文是自己学习Kotlin的学习笔记整理,以备忘与回顾。整理来源 - 疯狂Koltin讲义
Kotlin预备知识
1、kotlin 是一门强类型语言;
2、kotlin-stdlib.jar是Kotlin运行时环境
Kotlin可以自由调用Java的各种库,因此使用kotlin调用Android应用程序的Framework层开发应用程序甚至无序额外的学习,可以无缝的过渡到使用kotlin开发。
kotlinc (kotlin-jvm) -> Xxxx.class
kotlin-js -> js代码(前端或node.js代码都可以)
3、Kotlin程序与Java程序不同,Kotlin支持函数式编程,且在Kotlin语言中,函数也是一等公民。因此函数可以独立存在,即Kotlin程序只需要一个main函数作为程序入口,不需要将该main函数放在任何类中;
所谓"第一等公民"(first class),指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。
举例来说,下面代码中的print变量就是一个函数,可以作为另一个函数的参数。
var print = function(i){ console.log(i);};
[1,2,3].forEach(print);
4、kotlinc(或kotlin-jvm)->XxxKt.class 或 Xxx.lass
kotlinxxxtlin文件
基础类型
1、与Java不同,Kotlin并不强制要求每条语句必须以分号结尾(前提是一行只有一条语句),如果一行有多条语句,则前面的语句需要使用分号表示结束。
2、kotlin中的[]不只可以访问数组,还可以访问List和Map。
3、var 变量 val 常量;
var | val 变量名[:类型] [=初始值]
由于存在类型推断,程序要么通过":类型"的形式显式指定该变量的类型,要么为该变量指定初始值 - kotlin编译器将会通过该初始值确定变量的类型,即var a:Int或var a=5,不能声明变量时既不指定变量的类型,也不指定变量初始值。
使用val声明的不可变变量其实相当于常量,意味着一旦初始化就不能再重新赋值。kotlin常量分为两种:
-
局部范围的常量:允许在声明时不指定初始值,只要第一次使用之前指定初始值即可。
-
类的常量属性:既可以在声明时指定初始值,也可以在类或结构体的构造器中指定初始值。
4、如果直接在Kotlin程序中定义变量、函数,kotlinc将会自动生成一个名为“文件名首字母大写+Kt”的类,并将变量转换为该类的静态的getter和setter方法,函数则转换为该类的静态方法。
5、四种整型:Byte/Short/Int/Long 不支持八进制
Kotlin的整型与Java的不同,Kotlin的整型是引用类型【大致相当于Java中的包装类】,都继承自Number类型。
Int -> int
Int? -> Integer 接收null值
比如:
var pm1 :Int = 200//相当于Java基本类型int
var pm2:Int = 200
pm1===pm2 true//基本类型比较,输出true
var pm3:Int? =200//相当于Java包装类型Integer
var pm4:Int? = 200
pm3===pm4 false//引用类型比较输出false
两种浮点型:Float和Double 十进制和科学计数形式
如果声明的变量初始值只是简单的赋值为浮点值,则kotlin自动判断该变量的类型为Double;
浮点型除以0.0会得到正无穷[正数/0.0]或负无穷大[负数/0.0]或非数[0.0/0.0 或 负数开方],整型除以0.0报错。
注意:正无穷大都相等,负无穷大都相等,非数不与任意值相等;
6、Kotlin中的Char型就是简简单单的字符型,不能直接当成整型使用;即Char型值不能赋值给整型变量,整型值也不能赋值给Char型变量;
7、与Java程序不同,Kotlin不支持取值范围小的数据类型隐式转换为取值范围大的类型
kotlin要求不同的整型的变量或值、Float与