Kotlin筆記 類型、變量七芭、函數(shù)

跟著扔物線大佬的kotlin學(xué)習(xí)之旅開始了

變量素挽、函數(shù)和類型

一.基本數(shù)據(jù)類型

分類 類型 位寬
浮點型 Double 64
浮點型 Float 32
整型 Long 64
整型 Int 32
整型 Short 16
字節(jié) Byte 8

*Kotlin 中的 ==和Java的equals 等價

注意: 在Java里面把基本數(shù)據(jù)類型和引用類型做了區(qū)分,例如int 和 Integer 這兩個類型. 在Kotlin中不區(qū)分基本數(shù)據(jù)類型和包裝類型,永遠都是同一個類型(比如:Int)

轉(zhuǎn)義字符

二.申明變量以及注意事項

變量不可空

var name: String ="test"
  • kotlin變量無默認(rèn)值
  • 在 Kotlin 里面狸驳,所有的變量默認(rèn)都是不允許為空的
  • 變量不可直接賦值為null, Kotlin有空安全設(shè)計

變量的值要想設(shè)置為空,需要解除非空限制

//類型右邊加一個 ? 號预明,解除它的非空限制
var view: View? = null
//解除非空限制后,在代碼的任意地方都可以賦null
var name: String? = "Z"
name = null

但是可能為空的變量,不允許使用, 即便是加了非空判斷

//可能為空的變量,不允許使用, 即便是加了非空判斷
var view: View? = null
view.setBackgroundColor(Color.BLACK) //該行代碼會報錯

延遲初始化 lateinit

延遲初始化對變量的賦值次數(shù)沒有限制,你仍然可以在初始化之后再賦其他的值給 view

 lateinit var view: View

類型判斷

Kotlin 申明變量賦值,不寫變量類型也是可以的
kotin會做類型判斷,但是和動態(tài)類型是不一樣的

var name: String = "M"
var name= "M"

不可中途更換數(shù)據(jù)類型

var name = "Mike"
name = 1
// ??會報錯耙箍,The integer literal does not conform to the expected type String

var 和 val

var 是 variable 的縮寫贮庞,val 是 value 的縮寫。

val 只能賦值一次,不能被修改 ,和java中的final類似

三 . 函數(shù)

 fun cook(name: String) {
    }

Kotlin 返回是 Unit究西,可省略

fun main(): Unit {}
// Unit 返回類型可以省略
fun main() {}

傳參注意項

  • 可空變量不可傳給可空參數(shù)方法
  • 變量和方法的參數(shù),需同時可為空,或同時不為空
// ??可空變量傳給不可空參數(shù)窗慎,報錯
var myName : String? = "rengwuxian"
fun cook(name: String) : Food {}
cook(myName)
  
// ??可空變量傳給可空參數(shù),正常運行
var myName : String? = "rengwuxian"
fun cook(name: String?) : Food {}
cook(myName)

// ??不可空變量傳給不可空參數(shù),正常運行
var myName : String = "rengwuxian"
fun cook(name: String) : Food {}
cook(myName)

四 .可見性

函數(shù)如果不加可見性修飾符的話遮斥,默認(rèn)的可見范圍和變量一樣也是 public 的
override 例外

五. 屬性的getter/setter函數(shù)

*getter / setter 函數(shù)有了專門的關(guān)鍵字 get 和 set
*getter / setter 函數(shù)位于 var 所聲明的變量下面
*setter 函數(shù)參數(shù)是 value
*val 聲明的變量不能重寫setter函數(shù)

class User {
    var name = "Mike"
        ??
        get() {
            return field + "nb"
        }
        ??   ?? 
        set(value) {
            field = "Cute " + value
        }
}

六. 類

  1. 類的可見性, kotlin的類默認(rèn)是public的
  2. kotlin 里的類默認(rèn)是 final的, 而 Java 里只有加了 final 關(guān)鍵字的類才是 final 的(接觸final用 open)
open class MainActivity : AppCompatActivity() {}
  • open 沒有父類到子類的遺傳性
  1. 繼承是用:
  2. implement 實現(xiàn)也是:
class MainActivity : AppCompatActivity(), Impl {}

Kotlin 把構(gòu)造函數(shù)單獨用了一個 constructor 關(guān)鍵字來和其他的 fun 做區(qū)分峦失。

override 的不同

  • Java 里面 @Override 是注解的形式。
  • Kotlin 里的 override 變成了關(guān)鍵字术吗。
  • Kotlin 省略了 protected 關(guān)鍵字尉辑,也就是說,Kotlin 里的 override 函數(shù)的可見性是繼承自父類的较屿。
  • override 是有遺傳性的
class NewActivity : MainActivity() {
    // ??onCreate 仍然是 override 的
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
    }
}

關(guān)閉 override 的遺傳性隧魄,只需要這樣即可:

open class MainActivity : AppCompatActivity() {
    // ??加了 final 關(guān)鍵字,作用和 Java 里面一樣隘蝎,關(guān)閉了 override 的遺傳性
    final override fun onCreate(savedInstanceState: Bundle?) {
        ...
    }
}

abstract 關(guān)鍵字的不同

  • abstract 關(guān)鍵字修飾的類無法直接實例化
  • 會和 abstract 修飾的函數(shù)一起出現(xiàn)
  • 也可以沒有這個 abstract 函數(shù)
abstract class MainActivity : AppCompatActivity() {
    abstract fun test()
}
  • 子類如果要實例化购啄,還需要實現(xiàn)MainActivity里面的 abstract 函數(shù):

實例化類

var activity: Activity = NewActivity()

類型判斷和強轉(zhuǎn)

  • as強轉(zhuǎn)成一個錯誤類型, 會拋出異常
  • as? (如果強轉(zhuǎn)成功就執(zhí)行,如果不成功就不執(zhí)行)
(activityno as? NewActivity).actions()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嘱么,隨后出現(xiàn)的幾起案子狮含,更是在濱河造成了極大的恐慌,老刑警劉巖曼振,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件几迄,死亡現(xiàn)場離奇詭異,居然都是意外死亡冰评,警方通過查閱死者的電腦和手機映胁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甲雅,“玉大人解孙,你說我怎么就攤上這事∥窬#” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵穷遂,是天一觀的道長函匕。 經(jīng)常有香客問我,道長蚪黑,這世上最難降的妖魔是什么盅惜? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮忌穿,結(jié)果婚禮上抒寂,老公的妹妹穿的比我還像新娘。我一直安慰自己掠剑,他們只是感情好屈芜,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般井佑。 火紅的嫁衣襯著肌膚如雪属铁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天躬翁,我揣著相機與錄音焦蘑,去河邊找鬼。 笑死盒发,一個胖子當(dāng)著我的面吹牛例嘱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宁舰,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼拼卵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了明吩?” 一聲冷哼從身側(cè)響起间学,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎印荔,沒想到半個月后低葫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡仍律,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年嘿悬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片水泉。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡善涨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出草则,到底是詐尸還是另有隱情钢拧,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布炕横,位于F島的核電站源内,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏份殿。R本人自食惡果不足惜膜钓,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卿嘲。 院中可真熱鬧颂斜,春花似錦、人聲如沸拾枣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至忿磅,卻和暖如春糯彬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葱她。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工撩扒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吨些。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓搓谆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親豪墅。 傳聞我的和親對象是個殘疾皇子泉手,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容