kotlin 和 Java

狄宜然
2023-12-01
kotlin简介

kotlin是一种基于JVM的静态类型编程语言,kotlin可以编译成Java字节码,也可以编译成JavaScript,kotlin是强类型的语言,kotlin要求所有的变量必须先声明、后使用。

kotlin与java

kotlin可与java进行100%的互操作,使用kotlin过程中有任何问题可随时切换回java。

kotlin优势
  • 完全兼容Java
  • 空指针安全
  • 支持lambda表达式
对于安卓开发而言,主要有下面几个有利的影响
  1. 空指针安全的语言特性可减少大部分的程序崩溃
    如:
val name:String=null  //编译时就会报错报错
val name:String?=null//正确写法
  1. 更少的代码量
    如:
    声明一个实体类
//kotlin 会默认生成get和set方法
class test{
    var name:String?=null;
}

    以往的java代码中对控件进行操作

 //需要先
 TextView textView=findViewById(R.id.textView);
 //给控件设置文字
textView.setText("hello java")
//给控件添加事件
textView.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        Toast.makeText(this,"hello java",Toast.LENGTH_SHORT);
      }
    });

   在kotlin中

//设置文字、可直接使用xml中声明的id 不需要去findview
textView.text = "hello kotlin"
//添加事件
textView.setOnClickListener {toast("hello kotlin")}
  1. kolin有、java无的特性
  • 函数拓展(函数扩展可以让你对任意类进行扩展,而不用继承等等复杂的操作)
    如:
//新建个kt文件,叫做test 里面写上如下代码:
fun Context.toast(message:String,length : Int = Toast.LENGTH_SHORT){
  Toast.makeText(this,message,length)
}

就可以在所有Context类型中使用toast这个函数了

button.setOnClickListener {
//直接使用toast
toast("hello kotlin")
    
}
  • Lambda
    java在jdk8.0 以上才支持lambda
  • 高阶函数
    在studio开发工具中不能使用java不能使用lambda,除非我们使用种第三方库,kotlin默认支持labmbda。
    高阶函数即可以接受函数作为参数,也可以返回函数作为结果,提高了程序的灵活性.

    如:

    定义了一个名为maxNumber的高阶函数,并且传入了3个参数,前两个参数是Int类型, 最后一个参数是一个函数,并且函数类型是传入两个Int参数并返回Boolean类型值。这个高阶函数的返回类型是Int值

 fun maxNumber(arg1: Int, arg2: Int, paramFunc: (a: Int, b: Int) -> Boolean): Int {
        return if (paramFunc(arg1, arg2)) {
            arg1
        } else {
            arg2
        }
    }
    
    @Test
    fun test(){


            val max = { x: Int, y: Int -> x > y }

            val number = maxNumber(60, 80, max)
            println("number is $number")

    }
//输出  number is 80
    }}
}
 类似资料: