iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 2
1
Mobile Development

大一之 Android Kotlin 自習心路歷程系列 第 2

[Day 2] Android in Kotlin: 上手 Kotlin 的簡易開始

這篇文章是給想從 Java 初學轉成 Kotlin 的人,從基本的地方來看看,Kotlin 跟 Java 的差異
以下會有幾篇寫出筆者在目前基礎使用上主觀認為最為明顯的差異或是 kotlin 的特色

成員宣告

資料型態

在 java 中,宣告成員的方式是資料型態加上變數名稱,而且資料型態是一定要附上的,但可以不需要設定初值

int num;

而在 Kotlin,資料型態是在變數名稱後面呈現,且首個字母皆為大寫,

var name: String= "Jack"
var id: Int= 1  
var value: Double= 100.0

特別的是,kotlin 可以不需要自己輸入,它會自己判斷是什麼型態

var name = "Jack" //String
var id = 1        //Int
var value = 100.0 //Double

一定要輸入初值,否則會報錯,

必須被初始化或使其成為抽象類型

在提示上,他說可以加上 lateinit 詞綴
如字面上所翻譯,即代表「等等再初始化」的意思,但使用上要小心必須要確保這個成員一定會初始化,否則有時候會出現錯誤。
可以再配合 init{} 方法做初始化

另外 kotlin 如果需要在基本資料型態間做轉換的話,可以用 .toInt .toString 等非常直觀且好用的方法。

val and var

從上面的範例看到,除了資料型態跟初值等等以外,還要加上 val 和 var 的詞綴,他們代表了成員可不可被更改,在適當的地方使用 val 作為成員宣告,可以確保資料正確。

  • var : 代表是變數,可以自由改變其值
  • val : 代表是常數,不可變更其值

當你想用一般的方法改變 val 的值時,會跳出警告。

方法宣告

fun getSomething(id: Int): String{
    return "$id something"
}

一個方法所需的東西,基本上都差不多
只不過,kotlin 要在每一個方法前面加上 fun 作為開頭。如果有回傳值的話,要加上冒號表示在括號後方,表明回傳的資料型態;若沒有則什麼也不用加。

Getter and Setter

data.setName("Name")
name= data.getName()

上面是 java 的 getter and setter 的使用方式,而且那兩個 function 是要自己建立的。

而 kotlin 不是,他的 getter and setter 是自己就有的,不需要額外建立 function。當然,如果想要自製的話,也是可以的

使用時的「視覺」也有所不同
像是 text view 的 getText() and setText()

textView.text= "Jack"
val name= textView.text

在打上「text」時就會看到 from setText and getText,所以可以知道,其實是指同個東西的。

這些只是一些剛起步的小東西。Kotlin 在剛開始使用,可能會有些卡卡的。習慣了以後,會覺得 kotlin 在一些地方比起 java 更為簡潔。
在下節開始會介紹一點 java 沒有或是較少用的功能。


上一篇
[Day 1] Android in Kotlin: 大一暑假自習分享全紀錄——前言
下一篇
[Day 3] Android in Kotlin: NonNull and Nullable
系列文
大一之 Android Kotlin 自習心路歷程30

2 則留言

0
Shihjoanna
iT邦新手 5 級 ‧ 2020-09-22 17:13:21

最近也開始想要從java轉 kotlin, 謝謝這清楚簡單的講解!

1
missmeaabbcc
iT邦新手 5 級 ‧ 2021-07-04 17:29:10

方法宣告那邊的回傳類型寫錯囉

我要留言

立即登入留言