funlargerNumber(num1: Int, num2: Int): Int {val value =if(num1 > num2){
num1
}else{
num2
}return value
}//使用上面提到的语法糖,简化↓funlargerNumber(num1: Int, num2: Int)=if(num1 > num2) num1 else num2
when语句
可以理解为Java中switch语句的加强版:
自带break;
可以传任意类型的参数, 甚至不带参数;
支持类型匹配;
//精准匹配when(type){"1"->{1}"2"->{2}//只有一行可以省略大括号"3"->3else->{//else相当于switch的default0}}//类型匹配,is相当于Java的instanceofwhen(num){//判断num的类型,并打印is Int ->println("number is Int")is Double ->println("number is Double")else->println("number not support")}/*
不带参数用法, 把判断表达式完整写在->前
由于是判断表达式, 所以非常灵活, 可以代替多重ifelse.
*/when{
type <1->{"1"}
type ==2->{"2"}
type ==3->"3"else->{0}}
循环语句
java的for-i循环即for(;;)被KT舍弃了
java的for-each循环在KT则大幅加强变成for-in循环
for-in 循环与区间
为了方便的使用for-in循环, KT有生成特定范围语法——区间
两端闭区间
//数学表示[0,10]val range =0..10for(i in range){println(i)}
左闭右开区间
//数学表示[0,10)val range =0 until 10
常用于遍历数组, 右边界是长度即可
降序区间
//倒序打印10到1for(i in10 downTo 1){println(i)}
规律跳过一些元素
//1到10(不包括10), 每次循环加2, 相当于for-i循环中i = i + 2for(i in0 until 10 step 2){println(i)}
repeat 循环
简单的次数循环
//定义循环次数var time =3repeat(time){ index ->println(index)}
//类后面没有括号(),没有定义主构造函数class Student : Person {//使用constructor定义次构造函数, 但没有主构造函数,不能用this,只能用super来用父类的主构造函数constructor(name: String, age: Int):super(name, age){}//该类没有主构造函数}
接口
与Java与一致: 单继承,多实现
定义方法和Java一致
实现接口时, 也是使用冒号:,中间用逗号,进行分隔
//定义接口interface Study {funreadBooks()fundoHomework()}//Student类继承Person类classStudent(name: String, age: Int):Person(name, age), Study {//使用overvide关键字代表重写方法overridefunreadBooks(){println(name +" is reading.")}overridefundoHomework(){println(name +" is doing homework.")}}