爲什麼要學Kotlin
1: android開發跟着google的步伐走
Google在2017年的I/O大會上已經宣佈kotlin正式成爲Android的一級開發語言
2: 別人都在使用
Google發佈申明,目前已經有35%的Android專業開發人員使用kotlin(爆發式增長)
3: 以防萬一
Java以後要開始收費了,可能導致一部分公司放棄Java
4: 有需求
當前已經有許多公司的招聘要求中,要求開發人員需要會kotlin
5: 簡單
學習kotlin一般一週時間就足以完成,且kotlin與Java可以相互調用,覺得kotlin解決不了的地方,仍然可以使用Java編寫(非常人性化)
怎麼使用Kotlin
保留不重複造輪子的精髓,這裏不直接介紹使用步驟,分享幾個比較好用的教程地址和記錄剛開始比較容易忘記的知識點,或者關鍵字就ok,本身就是爲了做筆記,方便是第一位
1): Kotlin基本環境搭建,語法學習
學習Kotlin,看這一篇就夠了: 這個相對比較簡潔,看個人接受能力,可以先看菜鳥教程,再看這個
2): Kotlin語法之個人總結
當看完基本語法使用之後,會有些記不住,畢竟和java還是有一些不同,這裏記錄一些常用的,以便忘記時快速找到
注意:最起碼要了解一遍基本語法後再看
新關鍵字
fun //函數定義使用 如:fun sum(a: Int, b: Int): Int {...}
vararg //函數的變長參數(類似於java裏面參數後面帶...) 如:fun vars(vararg v:Int){...}
var //可變變量定義(可以代替任意類型) 如: var x = 5
val //不可變變量定義(只能賦值一次的變量(類似Java中final修飾的變量)) 如: val b = 1
is //運算符檢測一個表達式是否某類型的一個實例(類似於Java中的instanceof關鍵字) 如: if (obj is String) {...}
-------------區間↓------------
in //區間 如:for (i in 1..4) print(i)
step //步長 如:for (i in 1..4 step 2) print(i)
.. //從小到大 如:1..4
downTo //從大到小 如:for (i in 4 downTo 1 step 2) print(i)
until //排除 如:for (i in 1 until 4) {...}
------------區間↑-----------
when //類似其他語言的 switch 操作符
field //後端變量
lateinit //非空屬性必須在定義的時候初始化,kotlin提供了一種可以延遲初始化的方案 如: lateinit var subject: TestSubject
init //主構造器中不能包含任何代碼,初始化代碼可以放在初始化代碼段中,如: init {...}
constructor //類也可以有二級構造函數,需要加前綴 如: constructor (name: String, alexa: Int) : this(name) {...}
inner //內部類使用 inner 關鍵字來表示。如 inner class Inner {...}
Unit //是一個特殊的返回值,相當於void,意思就是此函數沒有返回值
Any //所有類的超類(類似與object)
新符號功能
$ //這個符號代表在字符串中加代碼塊 如:"我叫$name" 或者 "我叫${getName()}"
? //NULL檢查機制
!! //
: //指定參數類型,指定繼承關係
=== //值相等,對象地址才爲true
@ //標籤(例如:abc@、fooBar@、break@loop)
位操作符
shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 無符號右移位 (Java’s >>>)
and(bits) – 與
or(bits) – 或
xor(bits) – 異或
inv() – 反向
java的靜態在kotlin的形態
class Test {
//所有裏面的方法和屬性都是類似java的靜態
companion object {
public fun get(
)
}
}
Test.get() //調用
3): Kotlin語法真正運用到Android開發
自己動手
如果對Kotlin有了大概的瞭解,基本上就可以開始開發了,只是前期開發慢點,不要想着記得非常熟悉再用,只有真正的使用纔會發現問題和深刻記憶!
看別人的簡單demo
4):簡單的demo例子
package com.example.myapplication
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
/**
* 包含的java對應kotlin寫法
*
* 1: btn1 , btn2都是activity_main.xml裏面定義的id,在kotlin裏面可以直接使用
* 2: 在java裏面的匿名內部類
* 3: MainActivity.this
* 4: MainActivity.class
*/
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn1.setOnClickListener { view ->
startActivity(Intent(this, MainActivity::class.java))
}
btn2.setOnClickListener(object : View.OnClickListener {
override fun onClick(p0: View?) {
startActivity(Intent(this@MainActivity, MainActivity::class.java))
}
})
}
}