亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Kotlin基礎學習之循環和異常

2024-07-21 23:03:41
字體:
來源:轉載
供稿:網友

前言

Kotlin并沒有想象中的那么牛逼哄哄,也并不難,我更喜歡把他看做一枚語法糖,所謂的語法糖就是:能夠讓代碼變得更加簡單易讀的輔助工具。而工具這種東西,看看說明書,實操幾遍基本就能掌握,都是記憶性的東西,熟能生巧。如果你的Java基礎扎實,看看Kotlin的開發文檔,寫寫Demo,分分鐘就上手了。

說到這個Kotlin提升寫代碼效率,還是談談幾個最直觀簡單的例子吧:

      1.不用再去 findViewById 或者 @BindView,拿到控件id直接用

      2.不用再為 Bean 寫一堆 getter 和 setter 方法

      3.支持Java 8提供的新特性,Lambda表達式,函數式接口,流API等 ...

引言

在 Kotlin 的循環語句中,while 循環還有 do...while 循環和 Java 中是一致的,在這里就不再細說,而for 循環則和 Java 中有了很大的區別,異常處理也有了不同。

迭代數字

Java 中的 for 循環,總是先初始化值,判斷值是否在限定的范圍內,在每一次循環更新值,一直到超出范圍。

而在 Kotlin 中,for 循環沒有這樣的用法,但是為了替代這種常見用法,Kotlin 使用了區間的概念。

區別在本質上就是兩個值之間的間隔,一個初始值,一個結束值,使用 .. 運算符表示,通常是數字。

val oneToTen = 0..10

上面的表達式等同于 Java 中 0 < oneToTen <= 10。

Kotlin 中的區間是閉合的,結束值始終是區間的一部分。

那么舉一個例子,如何使用 for 循環打印 0~100 之間的數字呢?

for(i in 0..100) { println(i)}>> 0>> 1>> 2...>> 100

在這里,i 的初始值是0,結束值是100。等同于 Java 代碼。

/* Java */for(int i = 0; i <= 100; i++) { println(i);}

這時來了新的需求,要求倒序打印從100~0的數字,并要求只打印偶數。

for(i in 100 downTo 0 step 2) { println(i)}>> 100>> 98>> 96...>> 0

這里我們可以看到使用了 downTo 和 step,見名知意,downTo 表示從100 到 0 倒序,step 表示間隔,不寫默認step 1。等同于 Java 代碼。

/* Java */for(int i = 100; i >= 0; i-=2) { println(i);}

迭代集合

不管是在 Java 中還是在 Kotlin 中,for 循環使用最多的場景還是對集合的迭代。

首先我們來看看在 Java 中迭代一個 Map 集合,并將鍵值對打印出來。

/* Java */ HashMap<Integer, String> map = new HashMap<>();map.put(1, "100");map.put(2, "200");Set<Integer> keySet = map.keySet();for (int key : keySet) { System.out.println(" key:" + key + " value:" + map.get(key));}>> key:1 value:100>> key:2 value:200

Java 中要先獲取鍵的集合,遍歷鍵的集合,獲取對應值。

那么 Kotlin 中如何遍歷呢?

/* Kotlin */val map = hashMapOf<Int, String>()/map[1] = "100"map[2] = "200"for((key, value) in map) { println(" key:$key value:$value")}>> key:1 value:100>> key:2 value:200

怎么樣,是不是方便了很多。

同時,上面的代碼中還有另一個簡單的小技巧:你可以用map[key]來獲取值,也可以用map[key] = value來設置值,而不用調用get()  put()方法。

.. 語法不僅可以創建數字區間,也可以創建字符區間 val aTof = 'a'..'f'

如果要迭代一個 list 集合,在 Java 中要這么做:

/* Java */ArrayList<String> ls = new ArrayList<>();ls.add("100");ls.add("200");// 只是迭代集合,打印集合中的數據for(String str : ls) { System.out.println(str);}>> 100>> 200// 打印集合數據同時明確數據對應的下標for(int i = 0; i < ls.size(); i++) { System.out.println("index:" + i + " value:" + ls.get(i));}>> index: 0 value: 100>> index: 1 value: 200

接下來使用 Kotlin 實現:

/* Kotlin */val ls = arrayListOf<String>()ls.add("100")ls.add("200")for (i in 0 until ls.size) { println("index:$i value:${ls[i]}")}>> index: 0 value: 100>> index: 1 value: 200for ((index, value) in ls.withIndex()) { println("index:$index value:$value")}>> index: 0 value: 100>> index: 1 value: 200

這里我們又使用了一個新的方法 until,其等同于0..ls.size-1,同樣的,我們也可以使用 withIndex 方法來達到和 map 集合遍歷一樣的效果,同時獲取鍵和值。

Kotlin 中使用 in 來檢查一個值是否在區間中,或者它的逆運算 !in。同時 in 也可以作為 when 的分支。

fun checkChar(c: Char) = when(c) { in '0'..'9' -> "number" in 'a'..'z', in 'A'..'Z' -> "string" else -> "don't know"}

Kotlin 中的異常

Kotlin 中的異常處理和 Java 中大致相同。

同時 Kotlin 中的 throw 結構以及 try...catch 結構和 Kotlin 中的 if 語句一樣是表達式,可以作為另一個表達式的一部分使用。

val num = if(n in 0..100) {   n   } else {   throw IllegalArgumentException("The num value must between 0 and 100!")   }// 將一個字符串轉換成數字,若不是數字,返回 nullfun transform(str: String) : Int? { try { return str.toInt() } catch(e: NumberFormatException) { return null }}// 上面的方法可以寫作表達式體函數fun transform(str: String) = try {  str.toInt() } catch(e: NumberFormatException) {  null }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到kotlin教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美高清videos高潮hd| 欧美午夜宅男影院在线观看| 亚洲精品视频免费在线观看| 亚洲天堂视频在线观看| 欧美国产精品va在线观看| 久久久久国产精品免费| 国产精品成人av在线| 国产精品久久久久久亚洲调教| 国产精品美女久久久免费| 91在线观看免费高清| 欧美激情视频网址| 精品久久久久久久久久国产| 亚洲一区二区三区sesese| 亚洲精品久久视频| www亚洲欧美| 亚洲japanese制服美女| 国产精品美乳在线观看| 国内外成人免费激情在线视频| 国产精品综合网站| 日韩精品福利在线| 91性高湖久久久久久久久_久久99| 国产精品久久久久高潮| 日韩精品在线观看一区| 久久久久久久久国产| 亚洲欧美日韩精品久久奇米色影视| 亚洲欧美日韩在线一区| 中文字幕亚洲字幕| 亚洲国产美女精品久久久久∴| 亚洲精品v天堂中文字幕| 日韩在线观看你懂的| 国产亚洲精品美女久久久久| 色无极影院亚洲| 亚洲人成77777在线观看网| 日韩一中文字幕| 久久精品国产精品| 中文字幕日韩av电影| 日韩极品精品视频免费观看| 国产亚洲欧美日韩精品| 国产午夜精品视频| 欧美成人中文字幕在线| 国产成人精品免费久久久久| 国产91ⅴ在线精品免费观看| 一区二区三区久久精品| 久久亚洲国产精品成人av秋霞| 久久人人97超碰精品888| 在线观看视频亚洲| 欧美大片va欧美在线播放| 欧美午夜激情小视频| 欧美国产日韩二区| 国产z一区二区三区| 国产成人精品久久亚洲高清不卡| 久久久久久久久国产| 亚洲色图第三页| 国产精品欧美激情| 国产成人中文字幕| 久久精品国亚洲| 国产精品人人做人人爽| 九九综合九九综合| 国产剧情日韩欧美| 欧美丰满少妇xxxxx做受| 中文国产成人精品久久一| 欧美乱大交xxxxx另类电影| 欧美日韩免费在线| 久久夜色撩人精品| 91久久精品国产91久久| 韩国国内大量揄拍精品视频| 中文字幕日本精品| 国产精品自拍网| 欧美成人h版在线观看| 亚洲黄色www| 国产精品99久久久久久白浆小说| 北条麻妃一区二区在线观看| 国产视频久久网| 尤物yw午夜国产精品视频| 国产一区二区三区在线视频| 亚洲 日韩 国产第一| 亚洲欧美制服综合另类| 午夜伦理精品一区| 国产成人精品视| 伊人精品在线观看| 亚洲人成五月天| 国产精品一区二区久久| 欧美成人h版在线观看| 亚洲国产精品久久精品怡红院| 97超级碰碰碰久久久| 国产自摸综合网| 视频在线一区二区| 一区二区三区美女xx视频| 欧美电影《睫毛膏》| 日韩av高清不卡| 亚洲精品之草原avav久久| 国产精品久久久久久久电影| 97在线观看视频国产| 亚洲无av在线中文字幕| 成人黄色影片在线| 亚洲综合自拍一区| 久久久国产精彩视频美女艺术照福利| 97视频在线播放| 亚洲日本aⅴ片在线观看香蕉| 亚洲欧美成人在线| 91国内免费在线视频| 国产午夜精品免费一区二区三区| 久久精品国产精品| 欧美韩日一区二区| 91精品国产综合久久香蕉922| 欧美一区视频在线| 亚洲福利视频免费观看| 欧美成人午夜免费视在线看片| 日韩在线中文字幕| 911国产网站尤物在线观看| 97视频在线观看免费高清完整版在线观看| 成人深夜直播免费观看| 国产精品九九九| 亚洲国产成人精品女人久久久| 欧美日韩美女在线观看| 日韩在线观看你懂的| 亚洲人成电影网站色…| 亚洲在线观看视频| 欧美激情国产精品| 中文字幕欧美日韩va免费视频| 欧美视频免费在线| 97色在线视频观看| 国产97在线观看| 欧美裸身视频免费观看| 日韩精品欧美国产精品忘忧草| 久久伊人精品一区二区三区| 欧美日韩亚洲激情| 狠狠躁夜夜躁人人爽天天天天97| 亚洲女同性videos| 亚洲色无码播放| 欧美xxxx14xxxxx性爽| 国产一区视频在线| 色樱桃影院亚洲精品影院| 一本色道久久88综合亚洲精品ⅰ| 九九视频这里只有精品| 欧美成人免费网| 日韩av网站在线| 国产精品美女www| 91在线视频成人| 91精品视频在线看| 51视频国产精品一区二区| 欧美国产日韩二区| 欧美中文在线免费| 欧美性xxxx极品hd欧美风情| 国产精品久久久久久超碰| 久久久在线免费观看| 疯狂做受xxxx欧美肥白少妇| 97人洗澡人人免费公开视频碰碰碰| 美女精品视频一区| 亚洲精品国产精品国自产在线| 日韩免费视频在线观看| 国产99视频精品免视看7| 亚洲成av人影院在线观看| 日韩va亚洲va欧洲va国产| 岛国av一区二区在线在线观看| 中文字幕精品网| 欧美视频裸体精品| 国内精品久久久久久影视8| 久久久久久久久久久免费| 久久综合伊人77777尤物| 7777kkkk成人观看| 亚洲色在线视频| 欧洲日韩成人av| 亚洲97在线观看|