Android:快樂的轉(zhuǎn)型kotlin吧

前言

這些年對于kotlin的非議與爭論,在google將kotlin作為Android開發(fā)第一語言之后,質(zhì)疑聲越來越少了,因此每一個android開發(fā)者都應(yīng)該經(jīng)歷這個轉(zhuǎn)變的步驟,畢竟時代在變遷,技術(shù)是日新月異的,每一個技術(shù)者都應(yīng)該秉承不斷進(jìn)步的理念,故寫此文,以復(fù)習(xí)此次歷程

kotlin精簡的語法給予開發(fā)者最大的好處,莫過于,精簡。
用了kotlin之后,代碼更易讀,邏輯更條理,對于做開發(fā)項(xiàng)目的小伙伴們來說,簡直是福利有沒有,但是,從高級的角度來講,kotlin給予的好處真是太多太多。本篇不講高級的東西,從頭認(rèn)識下,如何簡單的使用kotlin與日常。

基本知識

1.與java不同的是,我們在寫代碼的時候可以擺脫“;”的束縛了,在代碼的末尾不強(qiáng)制要求以“;”結(jié)尾。
2.空格的使用:kotlin允許在非變量名以外的地方使用空格、制表符、回車
3.關(guān)鍵詞與java不完全相同,詳情,請訪問百度。
4.var(可變變量)
val(不可變變量)
使用: var/val + 名稱 +:+類型 = 初始值

  var value : String = "kotlin"
  val value : Int = 2
  1. java中的byte、short、int、long、float、double、string等在kotlin中全部變?yōu)槭鬃帜淮髮憽?br> 基本數(shù)據(jù)類型轉(zhuǎn)換可以使用toByte()等直接工具。
  val value : Int = 2
  val byteV = value.toByte()
//kotlin為我們準(zhǔn)備了轉(zhuǎn)換失敗的方案如若轉(zhuǎn)換失敗,則返回null
  val byteV = value.toByteOrNull()

6、${}模板使用
字符串中可以嵌入變量或表達(dá)式,比如

var name : String = "李剛"
var student = "這個學(xué)生的名字叫:${name}"
var student2 = "這個學(xué)生名字有: ${name.length} 個字"
null安全

kotlin讓android開發(fā)者贊不絕口的就是null安全的處理了。
1、首先在kotlin中每一個可變的變量都不允許直接調(diào)用,必須先判斷、后調(diào)用。
常見的幾種用法:

    //創(chuàng)建一個不可為空的字符串
    var value : String = "kotlin"
    //創(chuàng)建一個可為空的字符串
    var value2 : String? = "kotlin"
    //利用kotlin的類型推斷創(chuàng)建字符串
    var value3 = "kotlin"

2、kotlin在鏈?zhǔn)秸{(diào)用也可以很方便,像這樣

    user?.dog?.name

代碼意思是,如果user不為空,那么調(diào)用它的dog屬性如果dog不為空,則調(diào)用name,如果其中調(diào)用有空,則直接返回null。
3、Elvis運(yùn)算 其實(shí)就是if else的簡單寫法

    //if else 可以如此簡單的用來直接賦值有沒有
    //但是我們?nèi)粘J褂眠€應(yīng)該遵守正確的使用規(guī)范,這樣會使代碼易讀,且易擴(kuò)展
    var len = if(value2 != null) value.length else -1
    //主要看?: 如果它的左邊為空 則返回-1 如果不為空,則返回結(jié)果
    var len2 = value2?.length ?: -1

4、強(qiáng)制調(diào)用
kotlin也是可以不做空判斷的 “!!”符號就是強(qiáng)制不進(jìn)行空判斷,強(qiáng)制調(diào)用,與java一樣的是,會導(dǎo)致空指針。

  val value : String? = null
  //這樣調(diào)用會報錯,因?yàn)関alue可能為空,導(dǎo)致空指針
  val length = value.length
  //這樣調(diào)用就不會報錯了,但是如果value為空,則會拋出空指針
  val length = value?.length

運(yùn)算符

1、java的三目運(yùn)算在kotlin里面是不存在的了,取而代之的是if else

a>b ? a : b 被替換為 if(a>b) a else b

2、kotlin中字符串也提供了索引訪問

var str = "kotlin"
//注意此處的等號只是為了說明他的結(jié)果
str[2] = "t"
str.get(2) = "t"

3、比較運(yùn)算符
在java中經(jīng)常用到的“==”在kotlin中替換為“===”
kotlin中的“==”會先進(jìn)行空判斷,再進(jìn)行“===”判斷。
java中的“!=” 替換為“!==”
比較符號(>、<),不一樣的是,在kotlin中凡是實(shí)現(xiàn)了Comparable接口的類型都可以直接用符號直接比較利用的是compare to()方法 如:String、Date等都可以直接進(jìn)行比較
4、in運(yùn)算符
判斷前者是否被包含在后者里,可以參考java中的contains()方法

 a 是否在 b中
  a in b   
a 是否不在b中
  a !in b 

5、區(qū)間

//意為 a-b之間[a,b]這樣的關(guān)系  且 a 不大于 b
a..b 
//意為 [a,b)這樣的關(guān)系
a until b
//意為 反向區(qū)間 其實(shí)就是  [b,a] 反過來而已
b down to a
//步長概念    一般我們的步長都為1 ,從10-0 ,每次減1,步長便是改變每次減少的值
a in b step c  

流程控制

1、更加簡潔的when語句
->代表執(zhí)行語句相當(dāng)于 ->{}

var student = "A"
when(student){
  "A" -> Log.d(TAG,"A")
  "B" -> Log.d(TAG,"B")
  else -> Log.d(TAG,"else")
}

when語句還可以用于類型判斷等多種用途。
2、for in 循環(huán)

for(a in b){
  Log.d(TAG,"a")
}

此處介紹@outer用法
@outer用于終止帶有outer@標(biāo)識的循環(huán)

outer@ for(a < b){
     for(a in 0..3){
        if(a < 3){
              break@outer
         }
     }
 }

數(shù)組和集合

1、數(shù)組與集合的創(chuàng)建
數(shù)組:

var arr = arrayOf("A","B","C")
//創(chuàng)建一個不含空的數(shù)組、如果有空,則自動過濾掉
var arr2 = arrayOfNulls<String>(6)
//創(chuàng)建一個空數(shù)組
var arr3 = emptyArray<String>()
//甚至可以使用Lambda表達(dá)式直接創(chuàng)建,但是需要顯式指定數(shù)組長度
var arr4 = Array(5,{(it * 2 + 1)})
//直接用工具創(chuàng)建指定類型數(shù)組
var arr5 = intArrayOf(2,1,0)
//創(chuàng)建可變List
var lists = listOf("A","B","C")
var lists2 = listOfNotNull("A","B","C")
var lists3 = arrayListOf("A","B","C")
//創(chuàng)建不可變List
var lists4 = mutableListOf("A","B","C")

2、集合
集合分為可變集合與不可變集合
set集合的可變集合創(chuàng)建

var value = setOf("A","B","C")
var value2 = hashSetOf("A","B","C")
var value3 = linkedSetOf("A","B","C")

set集合的不可變集合創(chuàng)建

var value4 = mutableSetOf("A","B","C")

map集合的可變集合創(chuàng)建

var value = mapOf("A","B","C")
var value2 = linkedMapOf("A","B","C")
var value3 = hashMapOf("A","B","C")

map集合的不可變集合創(chuàng)建

var value4 = mutableMapOf("A","B","C")

寫在最后

kotlin語法是很豐富的,因涉及很詳細(xì)的東西,本篇不再介紹,在日常工作中,需要它的更多用法,都可以去kotlin官網(wǎng)查詢,kotlin提供了很多豐富的工具使日常所需變的簡單。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容