美文网首页Kotlin开发知识Kotlin编程
Kotlin编程之路——基本语法

Kotlin编程之路——基本语法

作者: 黄宏发 | 来源:发表于2017-06-02 17:27 被阅读108次

    我们写的代码片段可以在这里运行测试 测试代码地址

    Kotlinvarval的区别

    在Kotlin中的 var 和 val 是属于关键字,乍看它俩很相似,因为只是差一个字母而已,可是区别却很大。
    var是作为可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和Java中声明变量的方式一样。

    先来看下这段用var作为可变变量的代码

    fun main(args: Array<String>) {
        var name = "hongfa"  
        println(name)  
        name = "==hongfa=="  
        println(name)  
    }
    

    运行后的结果,运行正常,说明var确实是作为可变变量。

    image.png
    val是一个只读变量,这种声明变量的方式相当于Java中的final变量。一个val创建的时候必须初始化。
    fun main(args: Array<String>) {
     val finalValue = "我是不可改变的"
     finalValue = "我就是要改变你"; 
     println(finalValue)   
    }
    

    运行后的结果,看到没有,运行的时候报错了,提示cannot be reassigned(不能重新分配),通过这么个例子,我们可以很快的就了解并记住了他们的区别。


    image.png

    认识了 var 和 val 变量后,接下来就开始我们的第一个函数吧,废话不多说,上来就是干,直接上代码。

    函数表达式

    先来看下一个函数的返回值与无返回值是什么样的写法,kotlin中定义一个函数是使用fun作为关键字去声明函数

    无返回值的函数
    //默认无返回的函数
    fun method(){
     println("没有返回值");
    }
    
    带返回值的函数,下面来一个String类型和Int类型的函数
    //String类型
    fun method() :String{
        return "我是有返回值的";
    }
    //Int类型,这里有个区别,Java中int都是小写的,而Kotlin里面的Int首字母是大写的。
    fun method() :Int{
        return 0;
    }
    
    接下来看下无参和有参的函数是怎么定义的
    无参的函数
    //测试函数
    fun test(){
        println("无参的函数");
    }
    
    有参函数,默认是无返回值的
    fun add(var a: Int,var b: Int){
         println("有参的函数");
    }
    
    带返回值的有参函数
    fun add(a: Int, b: Int): Int{
     return a + b;
    }
    

    单表达式 函数

    
    fun result() =1;
    
    //等价于
    fun result(): Int {
      return 1;
    }
    //如果是这样子的话,可以和when结合在一起,when的作用在文章的后半部分有说到
    fun main(args: Array<String>) {
        println(result("Red"));
    }
    //获取返回值
     fun result(color: String): Int = when (color) {
      "Red" -> 0
      "Green" -> 1
      "Blue" -> 2
      else -> throw IllegalArgumentException("Invalid color param value")
    }
    

    in关键字的使用

    可以看到kotlin的if else,条件判断语句或者是使用for循环语句其实和Java都没有什么区别

    if语句判断示例
    //使用 in
    fun main(args: Array<String>) {
        var x: Int =1;//如果x的值为0,则输出not
        var y: Int =3;
       //如果存在于区间(1,y-1),则打印yes
        if (x in 1..y-1) {
            print("yes");
        }else {
             print("not");
        }
    }
    //使用 !in
    fun main(args: Array<String>) {
        var x: Int =0;//如果x的值为1,则输出not
        var y: Int =3;
       //如果x不存在与区间(1,y-1),则打印yes
        if (x !in 1..y-1) {
            print("yes");
        }else {
             print("not");
        }
    }
    
    //你也可以这样子写if语句,但是它打印的内容却是这样子的“kotlin.Unit”
    fun foo(param: Int) {
      val result = if (param == 1) {
        "one"
      } else if (param == 2) {
        "two"
      } else {
        "three"
      }
    }
    
    for循环语句使用示例
    fun main(args: Array<String>) {
        var v: Int;
        for(x in 1..5){
            println(x);
        }
    }
    
    //遍历集合(类似于Java中的for(String name : names))
    fun main(args: Array<String>) {
        val lists = listOf("a", "b", "c")
        for(list in lists){
            println(list);
        }
    }
    

    直接使用in在lists里面判断是否存在某个对象,这个就和我们Java里面的List的contains作用一样

    fun main(args: Array<String>) {
        var a: String = "a";
        val lists = listOf("a", "b", "c")
        //如果lists集合中包含a对象则打印yes
        if (a in lists){
           print("yes");
        }
    }
    

    when 语句

    Kotlin用when、->及else组合来替代原先的switch、case及default

    fun test(value: Int){
        when(value){
             10 -> println("数字10");
             20 -> println("数字20");
             30 -> println("数字30");
            else ->{
                println("未知数");
            }
        }
    }
    

    智能类型推测 -- is and !is

    判断一个对象是否为一个类的实例,我们可以使用is关键字
    这个与Java中的instanceof关键字类似,但在Kotlin中如果已经确定了一个对象的类型,可以在接下来的代码块中直接作为这个确定类型使用。

    fun getStringLength(obj: Any): Int? {
      if (obj is String) {
        // 做过类型判断以后,obj会被系统自动转换为String类型
        return obj.length;
      }
    
      //同时还可以使用!is,来取反
      if (obj !is String){
      }
    
      // 代码块外部的obj仍然是Any类型的引用
      return null;
    }
    

    异常处理 try/catch 表达式

    kotlin的异常处理和Java的异常处理并没有什么不同

    fun testTryCatch() {
      val result = try {
        test();
      } catch (e: ArithmeticException) {
        throw IllegalStateException(e);
      }
      //  对result做处理 
    }
    

    好了,本文内容到此结束,欢迎大家丢砖一起学习,一起进步,谢谢大家!

    相关文章

      网友评论

        本文标题:Kotlin编程之路——基本语法

        本文链接:https://www.haomeiwen.com/subject/bwyefxtx.html