最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin基礎學習之循環(huán)和異常

 更新時間:2017年12月07日 10:13:22   作者:WangJie0822  
最近在學習kotlin,Kotlin 是一個基于 JVM 的新的編程語言,下面這篇文章主要給大家介紹了關于Kotlin基礎學習之循環(huán)和異常的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

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

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

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

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

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

引言

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

迭代數(shù)字

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

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

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

val oneToTen = 0..10

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

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

那么舉一個例子,如何使用 for 循環(huán)打印 0~100 之間的數(shù)字呢?

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的數(shù)字,并要求只打印偶數(shù)。

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 循環(huán)使用最多的場景還是對集合的迭代。

首先我們來看看在 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()方法。

.. 語法不僅可以創(chuàng)建數(shù)字區(qū)間,也可以創(chuàng)建字符區(qū)間 val aTof = 'a'..'f'

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

/* Java */
ArrayList<String> ls = new ArrayList<>();
ls.add("100");
ls.add("200");

// 只是迭代集合,打印集合中的數(shù)據(jù)
for(String str : ls) {
 System.out.println(str);
}

>> 100
>> 200

// 打印集合數(shù)據(jù)同時明確數(shù)據(jù)對應的下標
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 實現(xiàn):

/* 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: 200

for ((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 來檢查一個值是否在區(qū)間中,或者它的逆運算 !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!")
   }

// 將一個字符串轉換成數(shù)字,若不是數(shù)字,返回 null
fun transform(str: String) : Int? {
 try {
 return str.toInt()
 } catch(e: NumberFormatException) {
 return null
 }
}

// 上面的方法可以寫作表達式體函數(shù)
fun transform(str: String) = try {
  str.toInt()
 } catch(e: NumberFormatException) {
  null
 }

總結

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

相關文章

  • Android 判斷網絡狀態(tài)及開啟網路

    Android 判斷網絡狀態(tài)及開啟網路

    這篇文章主要介紹了Android 判斷網絡狀態(tài)及開啟網路的相關資料,在開發(fā)網路狀態(tài)的時候需要先判斷是否開啟之后在提示用戶進行開啟操作,需要的朋友可以參考下
    2017-08-08
  • Android中aapt命令實踐

    Android中aapt命令實踐

    本篇文章給大家詳解了Android aapt命令介紹及常用命令實踐,有這方面需求的朋友跟著學習下吧。
    2018-01-01
  • Android中ImageCropper矩形、圓形 裁剪框的實現(xiàn)方法

    Android中ImageCropper矩形、圓形 裁剪框的實現(xiàn)方法

    這篇文章主要給大家介紹了關于Android中ImageCropper矩形、圓形 裁剪框的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2018-07-07
  • Android實現(xiàn)數(shù)據(jù)按照時間排序

    Android實現(xiàn)數(shù)據(jù)按照時間排序

    這篇文章主要為大家詳細介紹了Android實現(xiàn)數(shù)據(jù)按照時間排序的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Android LitePal的使用詳解

    Android LitePal的使用詳解

    這篇文章主要介紹了Android LitePal的使用,幫助大家更好的進行Android開發(fā),感興趣的朋友可以了解下
    2020-12-12
  • RecyclerView實現(xiàn)流式標簽單選多選功能

    RecyclerView實現(xiàn)流式標簽單選多選功能

    RecyclerView是Android一個更強大的控件,其不僅可以實現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。這篇文章主要介紹了RecyclerView實現(xiàn)的流式標簽單選多選功能,需要的朋友可以參考下
    2019-11-11
  • Android百度地圖應用之創(chuàng)建顯示地圖

    Android百度地圖應用之創(chuàng)建顯示地圖

    這篇文章主要為大家詳細介紹了Android百度地圖應用之創(chuàng)建顯示地圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android實現(xiàn)紙飛機的簡單操作

    Android實現(xiàn)紙飛機的簡單操作

    這篇文章主要為大家詳細介紹了Android實現(xiàn)紙飛機的簡單操作,類似于漂流瓶功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android自定義可循環(huán)的滾動選擇器CycleWheelView

    Android自定義可循環(huán)的滾動選擇器CycleWheelView

    Android自定義可循環(huán)的滾動選擇器CycleWheelView替代TimePicker/NumberPicker/WheelView,很實用的一篇文章分享給大家,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android可篩選的彈窗控件CustomFiltControl

    Android可篩選的彈窗控件CustomFiltControl

    這篇文章主要為大家詳細介紹了Android可篩選的彈窗控件CustomFiltControl,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

开封市| 河津市| 徐州市| 邮箱| 滨州市| 新泰市| 筠连县| 枣强县| 富裕县| 辉县市| 九龙县| 都兰县| 江华| 资源县| 洱源县| 苏州市| 宁波市| 湖州市| 瓦房店市| 含山县| 同德县| 鄂伦春自治旗| 白朗县| 玉溪市| 渑池县| 麻栗坡县| 黄石市| 阳原县| 东明县| 桐庐县| 华亭县| 石门县| 怀安县| 古蔺县| 朝阳县| 普定县| 水城县| 始兴县| 湖南省| 抚远县| 高阳县|