Kotlin入门之Kotlin基础语法

参考链接菜鸟教程

本文的内容如下:

  • 包声明
    • 默认导入
  • 函数定义
    • 可变长参数函数
    • lamada匿名函数
  • 定义常量与变量
  • 注释
  • 字符串模板
  • Null检查机制
  • 类型检测与类型自动转换
  • 区间

包声明

    package com.zfc.kotlin //声明包名
    import com.zfc.person.Person //引用包名

    fun main(args:Array<String>){
        Person.sex 
        print("helloworld")
    }

在kotlin中,进行包声明的时候,可以使得原文件的位置与包名不一致。方法和类都是可以通过包名定位到的。如果没有指定包名,则默认就是default

默认导入

在kotlin中,有一些包是默认导入的。比如:

* kotlin.*
* kotlin.annotation.*
* kotlin.collections.*
* kotlin.comparisions.*
* kotlin.io.*
* kotlin.ranges.*
* kotlin.sequences.*
* kotlin.text.*

print("helloworld") //该方法来自 io包
String //该字符串类型 来自 kotlin包
默认导入以上包,使用起来很简洁。

函数定义

函数定义的形式  fun methodName (params:ParamType) : ReturnType
                关键字 方法名 (形参标识符:形参类型):返回值类型
例如:

    fun sum(x:Int,y:Int):Int{
        return x + y
    }

kotlin方法可以根据返回值自动退换类型
    fun sum(x:Int,y:Int) = x+y
但是 
    public fun sum(x:Int,y:Int):Int = x+y // public 方法则必须明确写出返回类型(亲测可以不带返回值类型)

无返回值的函数
    fun sum2(x: Int,y: Int):Unit{  
        print(x + y)
        return
    }

Unit的描述:This type corresponds to the `void` type in Java. 并且可以省略
可变长参数函数
/**
 * 可变参数的函数,参数使用关键字 vararg 进行修饰
 */
fun varAgrsFun(vararg params: Int) {
    for (v in params) {
        println(v)
    }
}
lamada匿名函数
//首先声明一个表达式
val lamadaTravel:(Int) -> Int = {x  -> x * 2 * x}
//然后按照调用方法的形式,去调用lamada函数
println(lamadaTravel(1))

个人理解:当某个函数的传入参数和输入参数形成某种简洁的关系时,可以用lamada表达式快速完成

定义常量与变量

定义变量,格式如下:
    var <表示符> :<类型> = <初始化值>
定义常量,格式如下:
    val <标识符> : <类型> = <初始化值>

举例如下:
        var android: String = "android"
        val iOS: String = "iOS"
        //iOS = "11" //相当于java中的final,不能重新赋值

        //在kotlin中声明变量,关键字和标识符不可缺少。类型和初始化最多只可以缺少一个。
        var java = "java"
        var php: String
        php = "世界上最好的语言"

注释

注释分为单行注释、和多行注释
与java中不同的是,kotlin的块注释可以嵌套

字符串模板

$ 表示一个变量名或者一个变量值
$varName 表示变量的值
${varName.fun()} 表示变量的方法的返回值 

${'$'} //转义为 $ 

举例如下:
    var php: String
    php = "世界上最好的语言"
    println("how to descripe : $php")
    println("how to descripe kotlin : ${php.replace("好", "坏")}")

    执行结果:
    how to descripe php : 世界上最好的语言 
    how to descripe kotlin : 世界上最坏的语言

Null检查机制

kotlin的空安全设计机制,对于可以为空的参数,要做非空判断(防御式编程)。空判断处理,有两种 一种是字段!!.fun() 抛出异常;另一种是 字段?.fun 不做任何处理返回值为null或者配置?: 返回某个特殊值
    举例如下:

        var name: String? = null //变量 可以为 空
        var size = name?.length  //返回值为空
        var size1 = name!!.length //空指针
        var size2 = name?.length ?: -1 //返回值为-1
    当一个引用的类型可能为空时,其类型一定是要可以为空的(引用是指变量的引用或者方法返回值的引用)。

类型检测与类型自动转换

我们可以使用 is 运算符检测一个表达式是否某类型的一个实例(类似于Java中的instanceof关键字)。 
    fun getStringLength(obj: Any): Int? {
      if (obj !is String)
        return null
      // 在这个分支中, `obj` 的类型会被自动转换为 `String`
      return obj.length
    }

区间

for循环中的关键字是 in, step表示增长或者减少的"幅度"
    for(i in 1..10 step 3){
    // 1,4,7,10
    }

    for(i in 10 downTo 1 step 3){
    //10,7,4,1
    }

    for (i in 1 until 10 step 3) { //注意 util是一个闭区间
    // 1,4,7
    }

猜你喜欢

转载自blog.csdn.net/dirksmaller/article/details/79644028