2017年Google就将Kotlin语言作为安卓开发的一级编程语言
作为一名Android开发者今日才初识Kotlin,略显惭愧.... /汗颜
Kotlin是什么呢?
Kotlin 是一个用于现代多平台应用的静态编程语言
Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
Kotlin相比于Java 又有什么优势呢?
Kotlin比Java更安全,能够静态检测常见的陷阱。如:引用空指针
Kotlin比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现。
而且最主要的是 Kotlin实现了100% 和Java的兼容,所以日常完全可以满足Kotlin和Java混合开发的需求,这也给如小编这样的初学者以缓冲期。
不过相信通过系统的Kotlin学习,你也会喜欢上它优雅的语言特点。
初窥Kotlin发现它与Js的语法比较像哈....
1. 常量和变量以及常用关系
var 变量
val 常量
Kotlin句末不需要打分号
Kotlin的非null值判断机制:
val result = if (b != null) b.length else -1
b?.length
val result = b!!.length
关于 ? 和 !! 在日常中有很多地方应用,暂且不表!不过通过对 ? 的应用,几乎可以避免 Java 中的 NullPointerException
Kotlin中用 fun 来定义方法:
//无参
fun 方法名(参数值:参数类型){
方法体}
//有参数
fun 方法名(参数值:参数类型) : 返回值类型{
方法体}
fun onCreate(savedInstanceState: Bundle?) {
方法体}
fun add(x: Int, y: Int) : Int {
return x + y}
相对于于Java中的8种基本类型,Kotlin中提供了6种基本数据类型来满足日常开发需求。
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8
字符类型(单独的一种类型) Char,eg :val i: Int = b 这样写是错误的,java中这样写是正确的;
布尔 Boolean
数组 Array
字符串 String
Kotlin多加了一个支持三个引号的框起来的字符串,支持多行字符串
Kotlin目前可以支持数字下划线,如 val a:Int=2_520
4.1 for语句
kotlin:
for (i in 0..9) {
}
//遍历集合
var list = ArrayList()
for (i in list.indices){
var s = list[i]
}
Java:
for (int i = 0; i < 9; i++) {
}
//遍历集合
List list = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
}
4.2 选择语句
Kotlin:
var a = 0
var b = "模样"
when(a){
0 -> b = "哭" //简单的处理
1 -> b = "笑"
2 -> b = "皱眉"
3 -> { //复杂的处理
a ++
b = "眨眼"
}
}
Java:
int a = 0;
String b = "模样";
switch(a){
case 0:
b ="哭";
break;
case 1:
b ="笑";
break;
case 2:
b ="皱眉";
break;
case 3:
a++;
b ="眨眼";
break;
}
4.3 While语句
Kotlin 中的 while 循环语句 和 Java 中的基本相同!
4.4 区间表达式
for (i in 1..4) print(i) // 输出“1234” 都是闭区间
也可以使用 递增行数 until 范围[n,m) 左臂右开区间
// 循环5次,步长为1的递增
for (i in 0 until 5){ // for(i=0;i<5;i++)
print("i => $i \t")
}
对比以上2种,意思相同,区间不同
for (i in 4..1) print(i) // 什么都不输出 相当于数学中的 >=4 且<=0
也可以使用downTo 范围[ n,m]
for (i in 5 downTo 0){ // for(i=5;i<0;i--) 输出 5 4 3 2 1 0
print("$i")
}
步长关键字 step:
for (i in 10 until 16 step 2){ // 10 12 14
print(" $i")
}