初见

kotlin 学习笔记 一

2020-06-10  本文已影响0人  天堂守望者

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
下面我们来看 kotlin的语法

1定义常量 变量

kotlin 中 代码结束不需要用 ; 结尾
<标识符> var <变量名 > : <类型 > = <初始化值>
例如
var text : String ="kotlin"
<标识符> val <变量名 >: <类型> = <初始化值>
val num : Int = 1;
var 和val 的区别 就是 val只能赋值 一次 和Java 中 的 final 用法一样

class KolinTest {
    val a: Int = 1
    var str : String ="string"
    //你还可以这样写
    //不需要特意的去指定类型 系统自动推断变量类型为Int
    val b = 1
    fun main(args: Array<String>) {
        val c: Int      // 如果不在声明时初始化则必须提供变量类型
        c = 1           // 明确赋值
        var d = 5
        d += 1           // 变量可修改
        val x = 1
        // x = 2 报错 是编译不过得 val 只能赋值一次
    }

}
2函数定义

函数定义使用关键字 fun
格式为: fun <方法名>( 参数 : 类型) : 返回类型 如 Int(无返回类型 用 unit 关键字进行标识 类似Java 中的 volid )
示例: fun test( v: Int) : Int { 方法体 }
可变长函数 用 vararg 关键字进行标识 例如
格式: fun <方法名>(vararg 参数 : 类型) : 返回类型
示例 : fun test(vararg v:Int){ for(vt in v){print(vt) } ) // 输出12345 }
test(1,2,3,4,5) // 输出12345



class KolinTest {
  fun main(args: Array<String>) {
    var d=test(1,3);//  d=4
    vars(1,2,3)// 输出 123
   }

  //标准写法                  
   fun test(a: Int, b: Int): Int {
        return a + b;       //返回 a+b
     }

 //表达式作为函数体,返回类型自动推断
   fun sum(a: Int, b: Int) = a + b
// 注意: 若 用 public 修饰 又返回值  必须写上返回类型 
public fun sum(a: Int, b: Int): Int = a + b

//无返回值   Unit  也可以省略不写    fun test ()  对于public方法也是这样
  fun test () :   Unit {
  
  }
// 可变长 函数 
fun vars(vararg v:Int){
    for(vt in v){
        print(vt)
    }
}    
}

3 null 检测机制

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理 和Java中的三元表达式相似
var <变量名> :<类型> ?= <初始化值> 默认值
例如: var str:String ?=null 表示的是 str 是String 默认值为 null

  

class KolinTest {

    companion object {

        //类型后面加?表示可为空 如果后面不加? 则表示不可以为空 必须要有初始化的值
        //初始化值不可为 null  如 var text: String = null 是错误的  正确写法 var text: String ? = null
        var num: String? = "123"

        // 抛出异常 !! 和java 中 的 关键字 throws
        var page = num!!.toInt();
        var num2: String? = null
        //num2 为null  则 page2=-1 如不为null 则 page2=num2.toInt()
        val page2 = num2?.toInt() ?: -1// 输出结果 page2=-1

        /** 我是main入口函数 **/
        @JvmStatic
        fun main(args: Array<String>) {
            print(page)
            println()
            print("page2=" + page2)
            println()


            val x = parseInt(null)
            val y = parseInt("1")
            // 直接使用 `x * y` 会导致错误, 因为它们可能为 null.
            if (x != null && y != null) {
                // 在进行过 null 值检查之后, x 和 y 的类型会被自动转换为非 null 变量
                print(x * y)
            } else {
                print("x 或 y 的值 其中一个为null")
            }
        }

        fun parseInt(str: String?): Int? {

            return str?.toInt()
        }
    } 
     //  输出 结果
     //  123
     //  page2=-1
     //  x 或 y 的值 其中一个为null

}
4 类型自动转换
上一篇下一篇

猜你喜欢

热点阅读