Kotlin學(xué)習(xí)(一)--初嘗試(Var變量與Val常量)

前言:

Kotlin里面沒有new !!! Kotlin里面沒有new !!! Kotlin里面沒有new !!!
不用寫 ; 號結(jié)尾

一.var與val

var 代表變量
具體使用:

    var a: Int? = null//定義可為null
    var b: Any = Any()//定義類型為Any(就是Object).不可為null
    var c: String? = null//定義可為null
    lateinit var d: String//定義類型為String,延遲初始化,不能為基本類型數(shù)據(jù)

val 代表常量
定義比較簡單,和java一樣.必須初始化賦值

val e:String ="val"

二get() 和set()

kotlin里 變量定義默認(rèn)是有g(shù)et()和set()的,

var <propertyName>: <PropertyType> [= <property_initializer>]
      <getter>
      <setter>

上面這個看不懂也沒關(guān)系.
具體點(diǎn)

 var data: Any = Any()
        get() {
  //這里的field代表data,可以理解為臨時變量,用于代表訪問data,
  //因?yàn)橹苯觬eturn data的話,在kotlin data就代表get()方法,就死循環(huán)了..
            return field
        }
        set(value) {
            field = value//同理
        }

var和val的get set會有區(qū)別

很好理解
var是變量,所以有g(shù)et和set方法
val是常量,所以只有g(shù)et方法

具體使用

  var data: Any = Any()
    fun test() {
        //相當(dāng)于getData()
        var a = data
        HLog.i("a", a.toString())
        HLog.i("data", data.toString())

       //相當(dāng)于setData()
        data = Any() 
        HLog.i("data", data.toString())
    }

測試結(jié)果:


Paste_Image.png

三.變量的空引用檢查

Kotlin 類型系統(tǒng)致力于消滅空引用!不允許聲明變量但不初始化!

很重要的一句話.說的也很明白
在這里我糾結(jié)了1個多小時,思想沒轉(zhuǎn)過來!

舉個例子:

1.成員變量延遲初始化

  private Object data;
  public Object getData() {
        if (data==null){
            data = new Object();
        }
        return data;
  }
 public void setData(Object data) {
        this.data = data;
    }

這種代碼在java里還是經(jīng)常能見到的,延遲初始化.調(diào)用的時候才去創(chuàng)建
或是在沒有set的情況下就get,防止報空,防止被設(shè)置為null.初始化個默認(rèn)值,

自動轉(zhuǎn)化成kotlin代碼是這樣的:

Paste_Image.png

報錯了!為什么會報錯?

Paste_Image.png

那么聲明一下,在返回類型后面加個?,允許return null

Paste_Image.png

仔細(xì)想想邏輯會發(fā)現(xiàn)有問題. data不可能為null
因?yàn)檎{(diào)用后返回的必定不為null.這里為了不報錯卻聲明返回可能會null.
這就不合理了.

換種寫法

Paste_Image.png

這樣邏輯是對了,但是這樣卻很麻煩.我將類型改為List

Paste_Image.png

直接 data.xxx 的話會提示出錯.
必須調(diào)用getData()來操作.這樣就感覺有點(diǎn)不和諧了.

我覺得這樣寫就好了

Paste_Image.png

因?yàn)槭褂胟otlin一般不需要聲明get()和set()方法

當(dāng)然,哪種寫法好,看各自的愛好了.如果聲明的不是很耗性能的對象,我認(rèn)為
可以直接初始化

四.lateinit 延遲初始化var

   lateinit var data: Any

注意是var,不能延遲初始化val.
雖然說是必須定義的時候就初始化,但還是提供了一個標(biāo)識,讓var可以延遲初始化


Paste_Image.png

判null,會提示這是無用的代碼;
而且無法重寫get set方法,個人覺得這點(diǎn)不太友好.

---------------------------------分割線---------------------------------------

您的喜歡與回復(fù)是我最大的動力-_-

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皮获,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌濒募,老刑警劉巖评凝,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狞膘,死亡現(xiàn)場離奇詭異讯蒲,居然都是意外死亡掸鹅,警方通過查閱死者的電腦和手機(jī)童谒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門单旁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饥伊,你說我怎么就攤上這事象浑∧枋危” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵愉豺,是天一觀的道長篓吁。 經(jīng)常有香客問我,道長蚪拦,這世上最難降的妖魔是什么杖剪? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮驰贷,結(jié)果婚禮上盛嘿,老公的妹妹穿的比我還像新娘。我一直安慰自己括袒,他們只是感情好次兆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锹锰,像睡著了一般芥炭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恃慧,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天蚤认,我揣著相機(jī)與錄音,去河邊找鬼糕伐。 笑死砰琢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的良瞧。 我是一名探鬼主播陪汽,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褥蚯!你這毒婦竟也來了挚冤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤赞庶,失蹤者是張志新(化名)和其女友劉穎训挡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歧强,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澜薄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摊册。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肤京。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖茅特,靈堂內(nèi)的尸體忽然破棺而出忘分,到底是詐尸還是另有隱情棋枕,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布妒峦,位于F島的核電站重斑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏肯骇。R本人自食惡果不足惜绸狐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望累盗。 院中可真熱鬧寒矿,春花似錦、人聲如沸若债。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蠢琳。三九已至啊终,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傲须,已是汗流浹背蓝牲。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泰讽,地道東北人例衍。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像已卸,于是被迫代替她去往敵國和親佛玄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

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

  • 前言 人生苦多累澡,快來 Kotlin 梦抢,快速學(xué)習(xí)Kotlin! 什么是Kotlin愧哟? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,163評論 9 118
  • Kotlin系統(tǒng)化學(xué)習(xí)-20170823文章中有大部分內(nèi)容是借鑒《Kotlin實(shí)戰(zhàn)》中文版奥吩,特此注明一下。 Kot...
    ClAndEllen閱讀 1,657評論 2 10
  • google宣布Kotlin作為andorid一級開發(fā)語言有一段時間了蕊梧。在這段時間霞赫,我也在新的模塊上嘗試使用了ko...
    鋒ivy閱讀 1,028評論 1 2
  • Google在今年的IO大會上宣布,將Android開發(fā)的官方語言更換為Kotlin望几,作為跟著Google玩兒An...
    藍(lán)灰_q閱讀 76,794評論 31 489
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法绩脆,類相關(guān)的語法萤厅,內(nèi)部類的語法橄抹,繼承相關(guān)的語法靴迫,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評論 18 399