val相当于java中的被Final关键字修饰的常量
val:值类型 = value
不可以被重复赋值。
运行时常量:val x = getX()
编译期常量:const val x = 2
var是变量
var x:值类型 = value
或者用类型推导
var x = “helloworld” //定义变量并初始化
x = “hiworld” //再次赋值
类型推导:变量初始化或赋值时编译器可以推导量的类型
val str = “hello” //推导出str是String类型
var x = getString() + 5 // String类型
val i = 5 // int类型
kotlin 的main函数是起点和入口函数
kotlin的函数是以特定功能组织起来的代码块
- fun 函数名(参数列表):返回值类型{函数体}
fun sum(arg1:Int, arg2:Int):Int{
return arg1+arg2
}
- fun 函数名(参数列表) = 【表达式】
fun sum1(arg1:Int, arg2:Int):Int = arg1+arg2
匿名函数fun(【参数列表】)
var name = "TOM"
var age = "10"
val result = fun(name:String,age:String)= println("$name is $age")
println(result(name,age))
val int2long = fun(x:Int):Long{
return x.toLong()
}
println(int2long(3))
Lambda表达式:(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。
写法:{【参数列表】->[函数体]}
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
System.out.println("Actiondetected");
}
});
等价于
button.addActionListener(()->{
System.out.println("Actiondetected");
});
Lambda 表达式的完整语法形式,即函数类型的字面值如下
val sum = { x: Int, y: Int -> x + y }
()->Unit 无参,返回值是Unit
(Int)->Int 传入一个整型参数,返回一个整型
(String,(String)->String) –>Boolean 传入字符串、lambda表达式、返回布尔类型
lambda表达式的调用:用()进行调用,它等价于imvoke()
- val sum = { x: Int, y: Int -> x + y }
- sum(2,3)
- sum.invoke(2,3)