Kotlin基礎(chǔ)

2.1 基本要素

  1. 函數(shù)
//一般函數(shù)
fun max(a: Int ,b: Int): Int{
  return if(a>b) a else b
}
//表達(dá)式函數(shù)吐辙,函數(shù)體是單個(gè)表達(dá)式構(gòu)成疫稿,可以去掉花括號(hào)和return語(yǔ)句
fun max(a: Int ,b: Int): Int = if(a>b) a else b
//編譯器會(huì)自動(dòng)分析作為函數(shù)體的表達(dá)式,并把它的類(lèi)型作為函數(shù)的返回類(lèi)型
//并且只有表達(dá)式函數(shù)的返回值可以省略
fun max(a: Int,b: Int) = if(a>b) a else b
  1. 變量
//如果不指定變量類(lèi)型敬惦,編譯器會(huì)自動(dòng)分析初始化器表達(dá)式的值,把值的類(lèi)型作為變量的類(lèi)型
//如果變量沒(méi)有初始化器,需要顯式地指定它的類(lèi)型
//可變變量和不可變量
var a: Int = 42
var a = 42
//對(duì)應(yīng)java的final變量
val a = 42
val a: Int = 42
  1. 字符串模板
//調(diào)用的java的StringBuilder對(duì)象的方法
val name = "zhangsan"
println("Hello,$name!")
println("Hello,${name}!")

2.2 類(lèi)和屬性

值對(duì)象:只有數(shù)據(jù)沒(méi)有方法的類(lèi)

class Person(val name: String)
  1. 屬性
class Person{

  //聲明只讀屬性:同時(shí)聲明了一個(gè)簡(jiǎn)單的getter方法
  val name :String,
//聲明可寫(xiě)屬性:同時(shí)聲明了getter和setter方法
  var isMarried: Boolean
}
  1. 自定義訪問(wèn)器
class Person{
  val name: String
    get(){
      println("復(fù)寫(xiě)了get方法")
      return name
    }
  var isMarried: Boolean
    get(){
      return isMarried
    }
    set(married : Boolen){
      isMarried = married
    }
}

  1. 目錄和包
    Kotlin不區(qū)分導(dǎo)入的是包還是函數(shù)荷鼠,允許使用import關(guān)鍵字導(dǎo)入任何類(lèi)的聲明,也可以導(dǎo)入頂層函數(shù)的名稱(chēng)榔幸。

2.3 枚舉和‘when’

  1. 枚舉的聲明
enum class  Color{
  RED,GREEN,BLUE
}

//枚舉類(lèi)可以有屬性和方法
//如果在枚舉類(lèi)中定義任何方法允乐,就需要把枚舉常量列表和方法定義用分號(hào)分開(kāi)
//Kotlin唯一必須使用分號(hào)的地方
enum class Color(val r: Int,val g: Int,val b: Int){
  RED(255,0,0),
  GREEN(0,255,0),
  BLUE(0,0,255);
  fun rgb() = (r*256+g)*256+b
}
  1. 使用‘when’處理枚舉類(lèi)

  2. ‘when’結(jié)構(gòu)中使用任意對(duì)象
    when結(jié)構(gòu)允許使用任何對(duì)象作為分支條件

  3. 使用不帶參數(shù)的‘when’
    如果沒(méi)有給when表達(dá)式提供參數(shù),分支條件就是任意的布爾表達(dá)式

  4. 智能轉(zhuǎn)換:合并類(lèi)型檢查和轉(zhuǎn)換
    智能轉(zhuǎn)換:如果你檢查過(guò)一個(gè)變量是某種類(lèi)型削咆,后面就不再需要轉(zhuǎn)化它牍疏,可以直接把它當(dāng)做檢查過(guò)的類(lèi)型使用。

//使用is檢查判斷一個(gè)變量是否是某種類(lèi)型
var name = "我是不是字符串"
name is String
if(name is String){
   var n = name as String  //顯示地轉(zhuǎn)換是多余的
  name.length  //智能地轉(zhuǎn)換為String類(lèi)型
}

  1. 重構(gòu):用‘when’代替‘if’
  2. 代碼塊作為‘if’和‘when’的分支
    “代碼塊中最后的表達(dá)式作為結(jié)果”拨齐,在所有使用代碼塊并期望得到一個(gè)結(jié)果的地方成立

2.4 迭代事物:‘while’循環(huán)和‘for’循環(huán)

  1. ‘while’循環(huán)
  2. 迭代數(shù)字:區(qū)間和數(shù)列
    ‘··’運(yùn)算符標(biāo)識(shí)區(qū)間
val oneToTen = 1··10
//kotlin中的區(qū)間是前后閉合的
  1. 迭代map
  2. ‘in’檢查集合和區(qū)間的成員

2.5 Kotlin中的異常

  1. ‘try’鳞陨、‘catch’和‘finally’
    kotlin中不區(qū)分受檢異常未受檢異常
  2. ‘try’作為表達(dá)式

小結(jié)

  1. fun關(guān)鍵字來(lái)聲明函數(shù)。
  2. var和val關(guān)鍵字分別用來(lái)聲明可變變量和只讀變量
  3. 字符串模板可避免繁瑣的字符串連接瞻惋。$變量名或者${}來(lái)包圍一個(gè)表達(dá)式
  4. 值對(duì)象類(lèi)在kotlin中以簡(jiǎn)潔的方式表示
  5. if是帶返回值的表達(dá)式
  6. when表達(dá)式比switch更強(qiáng)大
  7. 編譯器智能轉(zhuǎn)換類(lèi)型
  8. 區(qū)間的創(chuàng)建
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厦滤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子歼狼,更是在濱河造成了極大的恐慌掏导,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽峰,死亡現(xiàn)場(chǎng)離奇詭異碘菜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)限寞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)忍啸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人履植,你說(shuō)我怎么就攤上這事计雌。” “怎么了玫霎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵凿滤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我庶近,道長(zhǎng)翁脆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任鼻种,我火速辦了婚禮反番,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己罢缸,他們只是感情好篙贸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著枫疆,像睡著了一般爵川。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上息楔,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天寝贡,我揣著相機(jī)與錄音,去河邊找鬼值依。 笑死兔甘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鳞滨。 我是一名探鬼主播洞焙,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拯啦!你這毒婦竟也來(lái)了澡匪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤褒链,失蹤者是張志新(化名)和其女友劉穎唁情,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體甫匹,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甸鸟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兵迅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抢韭。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恍箭,靈堂內(nèi)的尸體忽然破棺而出刻恭,到底是詐尸還是另有隱情,我是刑警寧澤扯夭,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布鳍贾,位于F島的核電站,受9級(jí)特大地震影響交洗,放射性物質(zhì)發(fā)生泄漏骑科。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一构拳、第九天 我趴在偏房一處隱蔽的房頂上張望咆爽。 院中可真熱鬧梁棠,春花似錦、人聲如沸伍掀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蜜笤。三九已至,卻和暖如春盐碱,著一層夾襖步出監(jiān)牢的瞬間把兔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工瓮顽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留县好,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓暖混,卻偏偏與公主長(zhǎng)得像缕贡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拣播,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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