kotlin函数和函数式表达式的简化写法:
fun main(args:Array<String>) { var result=add(2,5) println(result) ///简化--》2 var i={x:Int,y:Int->x+y} var result2=i(2,5) println(result2) ///简化--》3 var j:(Int,Int)->Int={x,y->x+y} var result3=j(2,5) println(result3) } ///简化--》1 fun add(x:Int,y:Int)=x+y
数据类型的转换
人机交互: 两个!!是确保输入的数据一定不为null
异常捕获:
阶乘:
import java.math.BigInteger fun main(args:Array<String>){ //大数的阶乘 /*93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 */ println(fact(BigInteger("100"))) } fun fact(num:BigInteger):BigInteger{ if(num==BigInteger.ONE){ return BigInteger.ONE }else{ return num*fact(num-BigInteger.ONE) } }
如果数据过多会导致栈溢出,可以用尾递归优化,java没有此优化方案
fun main(args:Array<String>){ var result=0 println(olladd(1000,result)) } //尾递归优化,要求返回必须返回本身才能用。 tailrec fun olladd(num:Int,result:Int):Int{ println("计算机第${num}次运算,result=${result}") if(num==0){ return 1 }else{ return olladd(num-1,result+num) } }