Kotlin学习笔记(二)

11、循环和范围

var a = 0 .. 100 // 代表一个数组,从0到100
var b = 0 until 100 // 代表一个数组,从0到99
var c = a.reversed() // 表示从100到0
var d = a.count() // 表示a数组的个数

// 从0循环到100,并依次取出赋值给i
for(i in 0 .. 100){
}

// 从0循环到100,并依次取出赋值给i,步长为2,即0、2、4、6...
for(i in 0 .. 100 step 2){
}

12、List

var list = listOf("111", "222", "333")
// 遍历
for(item in list){
}
// 带角标的遍历,i是角标,e是元素内容
for((i,e) in list.withIndex()){
}

13、Map

var map = TreeMap<String,String>() // 引入Java的Map包
map["111"] = "good"
map["222"] = "yes"
map["333"] = "no"

14、函数和函数式表达式

// 写法一:
fun demo(a:Int, b:Int):Int{
	return a+b
}
// 写法二:
fun demo(a:Int, b:Int):Int = a+b
// 写法三:
var demo = {a:Int, b:Int -> a+b}
使用var result = demo(1, 2)
// 写法四:
var demo:(Int, Int) -> Int = {a,b -> a+b}
使用var result = demo(1, 2)

15、默认参数和具名参数

fun demo(a:Int, b:Int = 10){ // b是默认参数
	
}
使用demo(a = 1) // 不传b的值也可以,此时a是具名参数
demo(3, 5) // 这样使用也没问题,5会覆盖掉10

16、字符串和数字转换

var a = 1
var b = "2"
b = a.toString()
a = b.toInt()

17、读取控制台输入(readLine()方法)

var str = readLine() // 控制台输入的都是字符串
var num = str?.toInt() // 不为空时才可以转Int,为空则不调用toInt()方法而是返回空
var num = str!!.toInt() // 告诉编译器,str肯定不为空,你就别操心了

18、异常处理

try{
	...
} catch(e : Exception){
	...
}

19、递归

// n的阶乘
fun jiecheng(num:Int) : Int{
	if(num == 1){
		return 1
	} else {
		return num * jiecheng(num - 1)
	}
}
// 大数字的阶乘
fun jiecheng(num:BigInteger) : BigInteger{
	if(num == BigInteger.ONE){
		return BigInteger.ONE
	} else {
		return num * jiecheng(num - BigInteger.ONE)
	}
}

20、尾递归优化(关键字tailrec)

// n的累加计算
fun leijia(num:Int) : Int{
	if(num == 1){
		return 1
	} else {
		return num + leijia(num - 1)
	}
}

// n的累加计算(尾递归优化)
tailrec fun leijia(num:Int, result:Int) : Int{
	if(num == 1){
		return result + num
	} else {
		return leijia(num - 1, result + num)
	}
}

使用:
var result = 0
result = leijia(100, result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值