Kotlin基础语法

导言:
Kotlin:开发Android的官方语言,本文只是笔记

1:方法定义:
 //函数-fun,名称-getHidePhoneNum,参数-phoneNum: String,返回-String 
  fun getHidePhoneNum(phoneNum: String?): String? {
       ...
        return phoneNum
    }
 //函数-fun,名称-signIn,参数-callback: ICallback, map: Map<String, String>, url: String,返回-void
 fun signIn(callback: ICallback, map: Map<String, String>, url: String) {
       ...
    }

2:常量和变量
 //val 常量声明
 var phoneNum = phoneNum
 var flag = false

 //var 变量声明
 val timeStampSec = System.currentTimeMillis()
 val length = phoneNum.length

 //没有new关键字
 var mSigninBean = SigninBean()

3: ?,:,@,in,"""",trimMargin()

//?,使用可空值,并检查是否null,用?
//:,常量变量类型声明、函数返回类型、类的继承都需要使用冒号
var name: String? = null
 fun getHidePhoneNum(phoneNum: String?): String? {
        var phoneNum = phoneNum
        try {
            if (phoneNum == null) return ""
            val length = phoneNum.length
            if (length > 4) {
                val startNum = phoneNum.substring(0, 3)
                val endNum = phoneNum.substring(length - 3, length)
                phoneNum = "$startNum*****$endNum"
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return phoneNum
    }

//@,匿名内部类
class Outer {
    private val bar: Int = 1
    var v = "成员属性"
    /**嵌套内部类**/
    inner class Inner {
        fun foo() = bar  // 访问外部类成员
        fun innerTest() {
            var o = this@Outer //获取外部类的成员变量
            println("内部类可以引用外部类的成员,例如:" + o.v)
        }
    }
}

//in,判断分数是否大于等于90,小于等于100
fun isGood(score: Int) {
    if(score in 90..100) //ranges是闭区间
        println("very good")
    else
        println("not so good")
}

//"""",多行字符串
 val text = """
    多行字符串
    多行字符串
    """

// trimMargin()删除空白
 val text = """
    |多行字符串
    |菜鸟教程
    |多行字符串
    |Runoob
    """.trimMargin()

4:类型检查和自动转换
   Any==Object
   is==instanceof 
   类型转换时为静态的,所以需要手动转换

fun getStringLength(obj: Any): Int? {
    if (obj is String) {
        // is 相当于java中的instanceof ,并自动转换为String类型。
        return obj.length
    }
    // obj没进行转换,仍为Any类型
    return null
}

//类型转换,需手动
val b: Byte = 1 // OK, 字面值是静态检测的
val i: Int = b.toInt() // OK

5:循环
//for循环
val bytes = mDigest.digest(str.toByteArray())
var result = ""
for (bt in bytes) {
     var temp = Integer.toHexString((bt and 0xff.toByte()).toInt())
     if (temp.length == 1) {
        temp = "0$temp"
     }
     result += temp
      }
     return result

//listOf定义集合
val list1= listOf("apple", "banana", "kiwi")
var list2: ArrayList<String> = ArrayList()
list2.add("item1")
list2.add("item2")
//for循环
for (item in list1) {
    println(item)
}

//数组
var arr = arrayOf(1, 3, 4, 5, 6)
    for(num in arr) { //直接使用数组中的对象循环
        println(num)
    }

//用while 循环
val list= listOf("apple", "banana", "kiwi")
var index = 0
while (index < list.size) {
    println("item at $index is ${list[index]}")
    index++
}

//when==switch
 when (mKind) {
            "diesel" -> fuelType = Constant.FUELTYPE_DIESEL
            "petrol" -> fuelType = Constant.FUELTYPE_PETROL
            "natural" -> fuelType = Constant.FUELTYPE_NATURAL
            "other" -> fuelType = Constant.FUELTYPE_OTHER
        }

若有复杂要求,详情这两篇文档
http://www.kotlindoc.cn/,
http://www.runoob.com/kotlin/kotlin-tutorial.html

猜你喜欢

转载自blog.csdn.net/ware00/article/details/80882723