Android Kotlin 基本語法1

不知道如何測試下列語法可以參考如何使用Android Studio 測試資料?

  1. var 可變變數
  2. val 不可變更參數
  3. Array 用法
  4. ArrayList 用法
  5. List的filter、sort、map、forEach
  6. when 用法
  7. fun 函式用法
  8. if 表達式
  9. for 表達式
  10. 擴充函數(自定義函式)

  • 1. var 可變變數
  • var data: Int = 0
    data = 1//正確
    lateinit var: Int //稍後在初始化,但使用前必須先初始化,否則會閃退
    
    private var data1 = ""
    //在set、get變更data1資料,請用field,否則會出問題
    set(value)  {
        field = "$value plus"
        println("set data $field")
    } get() = run {
        "AA-$field"
    }
    
    @Test
    fun test1() {
        println("into $data1")
        data1 = "Apple"
        println("into $data1")
        /*打印下方
        into AA-
        set data Apple plus
        into AA-Apple plus
        */
    }
    

  • 2. val 不可變更參數
  • val data: String = “123”
    data = “123434”//錯誤,val不可set
    
    private val data get() = run {
        println("is data O")
        "123"
    }
    @Test
    fun test1() {
        println("into $data")
        //打印 
        /*is data O
        into 123*/
    }
    

  • 3. Array 用法
  • var array:Array = arrayOf('1','2','3','4','5')//建立
    //array.forEach遍歷所有array
    array.forEach { println("$it") }//此時打印出1 2 3 4 5
    array = array.plus('6')//新增
    array.forEach { println("$it") }//此時打印出1 2 3 4 5 6
    array.reverse()//資料翻轉
    array.forEach { println("$it") }//此時打印出6 5 4 3 2 1
    //遍歷的另一種方法,此方法可以知道index,也可以知道value
    for((index,value) in array.withIndex()) {
        println("$index -> $value")
    }
    

  • 4. ArrayList 用法
  • fun onArrayListChange() {
        //MutableList是可讀可寫的List,底層其實是Java的ArrayList
        //List則是可讀不可寫
        //建立ArrayList
        //var arrayList: ArrayList = arrayListOf()
        //建立MutableListOf
        var arrayList: MutableList = arrayListOf()
        arrayList.add("123")//新增123
        arrayList.add("234")//新增234
        arrayList.add(0,"aaa")//在list index = 0 位置新增aaa
        println("AA -> $arrayList")//AA -> [aaa, 123, 234]
        arrayList.removeAt(0)//刪除位置index = 0的資料
        println("BB -> $arrayList")//BB -> [123, 234]
        arrayList.clear()
        println("CC -> $arrayList")//CC -> []
    
    
        val list1 = listOf("123", "234")
        val list[0] = "233"//錯誤,List不能寫只能讀
        val list2 = List(2) {
            when(it) {
                0 -> {
                    10
                }
                1 -> {
                    15
                }
                else -> {
                    -1
                }
            }
        }
        println("${list2[0]}, ${list2[1]}")
        //打印出10, 15
    }
    

  • 5. List的filter、sort、map、forEach
  • val list = listOf("cat", "dog", "rabbit")
        .filter {
            it.endsWith("t")
        }
    println("list $list")//list [cat, rabbit]
    val list2 = listOf("dog", "cat", "rabbit")
        .sortedBy {
            it
        }
    println("list2 $list2")//list2 [cat, dog, rabbit]
    val list3 = listOf("dog", "cat", "rabbit")
        .sortedByDescending {
            it
        }
    println("list3 $list3")//list3 [rabbit, dog, cat]
    val list4 = listOf("cat", "dog", "rabbit")
        .map {
            //遍歷,並把所有換成大寫
            it.uppercase()
        }
    println("list4 $list4")//list4 [CAT, DOG, RABBIT]
    val list5 = listOf("cat", "dog", "rabbit")
    list5.forEach {
            //遍歷,並打印,map才能針對資料直接變化,forEach並不行
            println(it)
            /*
            cat
            dog
            rabbit
             */
        }
    println("list5 $list5")//list5 [cat, dog, rabbit]
    

  • 6. when 用法
  • //第一種
    val string = "123"
    when(string) {
        "123",
        "1233" -> {
    
        }
        else -> {
        }
    }
    //第二種
    val string = "123"
    val string1 = "234"
    when {
        string == "123" && string1 == "234" -> {
    
        }
        else -> {
    
        }
    }
    //第三種
    val data: Int? = 100
    when(data) {
        is Int -> {
    
        }
        in 0..100 -> {
    
        }
    }
    

  • 7. fun 函式用法
  • //第一種
    fun sum(a: Int, b: Int): Int {
        return a+b
    }
    println("${sum(1,2)}")//打印3
    //第二種
    fun sum(a: Int, b: Int) =  a + b
    println("${sum(1,2)}")//打印3
    //第三種
    fun sum(a: Int = 5, b: Int) =  a + b
    println("${sum(b=2)}")//打印7
    //第四種
    var sum = {arg1: Int, arg2: Int ->
        arg1 + arg2
    }
    println("${sum(100,10)}")//打印110
    //第五種(進階用法)
    fun calculationFun():() -> Unit {
        var data1 = 10
        var data2 = 20
        return {
            data1-=1
            data2+=2
            println("data1 = $data1, data2 = $data2")
        }
    }
    val calculationFun1 = calculationFun()
    calculationFun1() //打印data1 = 9, data2 = 22
    calculationFun1() //打印data1 = 8, data2 = 24
    

  • 8. if 表達式
  • //如果string == "123", result = 0
    //如果string == "234", result = 1
    //如果其他的話, result = 2
    val result = if(string == "123") {
        0
    } else if(string == "234") {
        1
    } else {
        2
    }
    

  • 9. for 表達式
  • val items = listOf("data1", "data2", "data3")
    //此方式,可以直接取到該index裡面的值
    for (item in items) {
        println("item = ${item}")
    }
    //此方法,可以直接取得當前index
    for (index in items.indices) {
        println("item = ${items[index]}")
    }
    
    //如果重複的話,也可以用下方
    repeat(7) { index ->
        println("index = $index")
    }
    

  • 10. 擴充函數(自定義函式)
  • class TestClass {
        private val addPrice = 100
        infix fun addPrice(value: Int): Int {
            return value+addPrice
        }
    }
    
    val testClass = TestClass()
    val result = testClass addPrice 1
    println("result = ${result}")//打印出101
    

    上面皆是版本ext.kotlin_version = “1.5.0″測試的


    更多相關可以參考這裡


    相關文章

    Android Kotlin 基本語法2Android Kotlin 基本語法3
    1. 操作符重載
    2. 資料區間用法
    3. map使用方法
    4. 內部靜態變數
    5. 靜態變數
    6. 當資料如果是?型態宣告
    7. 資料使用!!,強制將Int?轉Int
    8. data class用法
    9. 強制轉型
    10. run、with、apply、also用法
    1. class多建構式
    2. 內部class用法
    3. interface
    4. enum class 用法
    5. sealed class 用法
    6. open 用法
    Android Kotlin 基本語法4Android Kotlin Classes and Objects-1
    1. 為基礎類型新增函式
    2. Abstract技巧使用
    3. throw使用方法
    4. 利用let特性處理資料型態?
    5. 快速初始化Array
    6. 快速將兩個資料交換
    7. 自定義待處理的fun
    8. 幫loop設定標籤
    1. 多個class與執行順序
    2. init與constructor執行優先序
    3. open繼承與禁止繼承
    4. 不同的寫法,影響override能不能改變值
    5. 繼承與當前Class執行順序
    6. 由inner class去找parent的super
    7. 繼承多個class時,選擇指定的Parent
    8. private protected public internal修飾符差異
    Android Kotlin Classes and Objects-2Android Kotlin 委託屬性
    1. 幫List新增swap功能
    2. 擴充外加函式,幫助程式簡化
    3. T,多類型引入
    4. T搭配in、out使用
    5. 1個對象的object用法
    6. 類型別名
    7. 內聯類
    8. 委託
    1. 變數委託
    2. lazy懶加載用法+String.split
    3. 可觀察屬性observable
    4. 委託內建map
    5. 本地委託屬性,此方法可以減少加載
    6. 委託屬性,唯獨與可讀可寫的方法
    7. 將舊方法棄用

    歡迎訂閱唷!

    廣告

    發表迴響

    在下方填入你的資料或按右方圖示以社群網站登入:

    WordPress.com 標誌

    您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

    Twitter picture

    您的留言將使用 Twitter 帳號。 登出 /  變更 )

    Facebook照片

    您的留言將使用 Facebook 帳號。 登出 /  變更 )

    連結到 %s

    WordPress.com.

    向上 ↑

    %d 位部落客按了讚: