Kotlin基础语法

2018-03-23  本文已影响23人  小庄bb

包的定义

package com.doctorq
import java.util.*

注意这里的包定义和java有一点不同,它和文件所在的路径没有关系,但是编译过后,却会按照原来的包名来生成路径

函数定义

带返回值的函数

//定义方法
fun sum(a:Int, b:Int): CharSequence? {
    return (a + b).toString()
}

函数关键字为fun, 参数名和类型要倒叙,返回值用:后面跟类型.这个很Scala而且调用函数,没有对象概念,直接调用了.

表达式函数

//定义表达式
fun sum1(a: Int, b: Int) = (a + b).toString()

无返回值函数

//定义没有返回值的表达式
fun showMsg() : Unit {
    Log.d("hello", "----------------------Kotlin-----------------------")
}

也可缺省

fun showMsg() {
    Log.d("hello", "----------------------Kotlin-----------------------")
}

本地变量

常量,关键字val

val a: Int = 1
val b = 1

变量关键字var

var c : Int
    c = 3

注意常量不能赋值,也就是说

val c 
c = 1

这种表示方式会报错

注释

可以使用双斜杠注释一行语句,或者/**/的格式注释语句块

/*
val c
c = 1
上面的这种定义方式是错误的
 */

格式化字符串

在字符串格式中输出字符串,以$+变量名的形式就可以直接读取字符串的值,

fun showMsg1() {
    val name:String = "hello"
    Log.d("$name", "----------------------Kotlin-----------------------")
}

字符串中调用函数

fun getMsg() :String{
    return "hello"
}

fun showMsg2() {
    Log.d("${getMsg()}", "----------------------Kotlin-----------------------")
}

条件判断语句

if语句

fun showMsg3(msg: String) {
    Log.d(msg, "----------------------Kotlin-----------------------")

}

//正常语句
fun maxOf(a: Int, b: Int) {
    if (a > b)
        return showMsg3(a.toString())
    else{
        return showMsg3(b.toString())
    }
}
//条件表达式
fun maxOf1(a: Int,b: Int) = if ( a > b ) showMsg3(a.toString()) else showMsg3(b.toString())

空值安全检查

对于有可能返回空值的函数,必须标注出来,在返回值类型后面跟?表示,比如一个函数的返回值为Int值,如果返回值可能为空,那么要写成Int?

fun sum(a: Int, b: Int): CharSequence? {
            return (a + b).toString()
}

类型检查

使用关键字is来检测表达式类型,如果是常量或属性,如果进行了类型检查,类型检查分支的自动转变为该对象.如果判断的时候用!is,则if语句外的obj自动转化为该对象,更加强大的是如果在&&判断左边有判断,右边也能直接转化为该对象

fun getStringLength(obj:Any):Int? {
    if (obj !is String){
        return null
    }

    return obj.length
}

循环语句

fun showMsgs(){
    var list = listOf<String>("doctorq", "dev", "text")
    for(item in list){
        showMsg3(item)
    }
}

如果要获取索引值的话使用

fun showMsgs1(){
    var list = listOf<String>("doctorq", "dev", "text")
    for(index in list.indices){
        showMsg3("$index : ${list[index]}")
    }
}

while语句

fun showMsgs2(){
    var list = listOf<String>("doctorq", "dev", "text")
    var index = 0
    while (index < list.size){
        showMsg3("item at $index is ${list[index]}")
        index++
    }
}

when语句,类似于java语句中的switch,case,不过条件更加灵活

//类似java中的switch,scala中的case
fun describe(obj: Any): String =
        when (obj) {
            1 -> "one"
            "Hello" -> "Greeting"
            is Long -> "Long"
            !is String -> "Not a string"
            else -> "UnKnown"
        }

范围定义

获得一个区间的值,可以使用in关键字,创建一个区间数组可以使用..来创建,比如要创建一个1到10的数组,可以使用1..10来创建

fun demo(){
    val x = 10
    val y = 9
    if (x in 1..y+1) {
        showMsg3("fits in range")
    }
}

//集合
fun demo3(){
    var list = listOf<String>("doctorq", "dev", "text")
    for (item in list){
        showMsg3(item)
    }
}

上一篇下一篇

猜你喜欢

热点阅读