一、语法:
(1)方法
default:public
所有输入类型后置,且数据类型第一个大写;
//java:
public int getScore(int id, String subjectName){
return getStudent(id).getSubject(subjectName).get();
}
//kotlin
//存在一个null的数据类型,在后面?即可;
fun getScore(id:Int, subjectName:String) : Int{
return getStudent(id)?.getSubject(subjectName)?.get()?:0
}
方法传入参数可以是函数
// 方法类型括号要包住前面
//error: Int->(int)
//right: (Int)->((Int)->Int)
fun sendRequest(url:String,
timeOut:Int=30*1000//默认值,如果不传入其他值
function1:aFunction()? = null,
function2:((String)->Unit)):{
doSomething()
}
(2)变量
如果不声明,可以自动匹配数据类型;
var:可变变量
val:不可变变量
var lesson : String = “string”
lesson = lesson + "2021"
val age = 18 //自动声明类型;
age = 16 //Error
val user = User()
user.name = "这个可以变动"
特别情况:
// 自动返回数据类型
fun plus(x:Int, y:Int) = x+y
//map此时不能调用接口内容;
var map = HashMap<Long, String>();
// 可以为空
var nullableStr:String? = null
// 允许结果为空
val len:Int? = nullable?.length
// 不允许结果为空,=后面要返回0
val len:Int = nullable?.length?:0
//!!为非空断言
val len:Int = nullable!!.length
(3)逻辑函数[if, when, for]
if为表达式必须要有返回
fun max(a:Int, b:Int){
return if(a>b) a else b
}
fun max(a:Int, b:Int){
if(a>b){
return a
}else{
return b
}
}
when特别版switch
// when再满足第一个条件时会直接return
when(x){
1 -> println("1")
2,3 -> println("2 or 3")
paseInt(5) -> println(5)
in 1..10 -> println("1-10")
in validNumbers -> println("valid")
else -> print("none")
}
fun add(a:Int, b:Int ){
return when{
a>b -> a
else -> b
}
}
for
// 不包含10
for(i in 0 util 10){}
for(i in 0 util 10 step 2){}