Kotlin入门学习(一)
2019-07-25 本文已影响0人
岁月静好浅笑安然
kotlin 学习 第一章
1.hello
fun main(args:Array<String>){
println("hello word")
}
2.变量和输出
//变量声明和使用
fun main(args:Array<String>){
var name="小明"//省略了数据类型 var name:String="小明"
name="李四"
println(name)
}
常见的数据类型
- Byte
- Short
- Int
- Long
- Float
- Double
- String
智能类型推断
//编译器会推断
fun main(args:Array<String>){
var name="小明"//
var i=18
var j=999999999999
}
//指定数据类型
fun main(args:Array<String>){
var name:String="小明"//
var i:Int=18
var j:Long=999999999999
}
变量和常量
//val var
fun main(args:Array<String>){
val name:String="小明"//不可更改
var name:String="小明"//可重新更改赋值
name="李四"
}
取值范围
//
fun main(args:Array<String>){
val aB=Byte.MAX_VALUE
val bB=Byte.MIN_VALUE
val aL=Long.MAX_VALUE
val bL=Long.MIN_VALUE
}
函数入门
//
fun main(args:Array<String>){
var a=4
var b=6
println(a<b)
var num3=Math.sqrt(5.0)-Math.sqrt(4.0)
var num3=Math.sqrt(3.0)-Math.sqrt(3.0)
}
函数加强
//
fun main(args:Array<String>){
var a=4
var b=6
println(plus(a,b))
println(sub(a,b))
println(mutl(a,b))
println(devide(a,b))
}
// +-*/
fun plus(a:Int,b:Int):Int{
return a+b
}
fun sub(a:Int,b:Int):Int{
return a-b
}
fun mutl(a:Int,b:Int):Int{
return a*b
}
fun devide(a:Int,b:Int):Int{
return a/b
}
字符串模板 $("")
//字符串模板 $("")
fun main(args:Array<String>){
var a=get_("中山公园")
println(a))
}
fun get_(address:String):String{
var temp="$我去{address}玩了"
return temp
}
条件控制
//条件控制
fun main(args:Array<String>){
plus(“较大的${get_(3,5)}”)
}
fun get_(a:Int,b:Int):Int{
if(a>b) return a else return b
}
空值处理
//空值处理
//默认不为空
fun heat(str:String):String{
return "热"+str
}
//加?号 可以为空
//fun heat(str:String?):String{
//return "热"+str
//}
fun main(args:Array<String>){
var re=heat("水")
println(re)
}
when
//when
fun gradeStr(i:Int){
when(i)
10 -> println("我是10")
9 -> println("我是9")
8 -> println("我是8")
7 -> println("我是7")
6 -> println("我是6")
else -> println("我是其他")
}
fun main(args:Array<String>){
gradeStr(7)
}
区间
fun main(args:Array<String>){
var nums= 1 ..100//[1,100] 闭区间
//var nums= 1 until100//[1,100)前闭后开区间
var result=0
for(num in nums){
result=result+num
}
println("结果${result}")
var num3 =1 ..16//step步长
for(a in num3 step 2){
//1 3 5 7 9 11 13 15
}
//reversed() 反转
var num4=num3.reversed()
}
List Map
//List增强写法
fun main(args:Array<String>){
var lists=listof("aaaa","bbbb","cccc")
for((i,e) in lists.withIndex){
println("下标${i}值${e}")
}
}
//map
fun main(args:Array<String>){
}
函数和函数表达式
fun main(args:Array<String>){
//写法一
var result=add(3,5)
println(result)
//写法二
var j={x:Int,y:Int ->x+y}
var result2=j(3,5)
println(result2)
//写法三
var i:(Int,Int) ->Int ={x,y ->x+y}
var result3=i(6,4)
println(result3)
}
fun add(a:Int,b:Int)=x+y
默认参数和具名参数
fun main(args:Array<String>){
var result=zhouchang(banjing=2.0)
}
fun zhouchang(pi:Float=3.14,banjing:Float):Float{
return 2*pi*banjing
}
异常处理
//try-catch
fun main(args:Array<String>){
println("请输入第一个数字")
var a=readLine()
println("")
var b=readLine("请输入第二个数字")
try{
var num1:Int=a!!.toInt()
var num2:Int=b!!.toInt()
println("${num1}+${num2}=${num1+num2}")
}catch(e:Exception){
println("输入有误")
}
}
递归
fun main(args:Array<String>){
var num=BigInteger("100")
println(fact(num))
}
fun fact (num:BigInteger):BigInteger{
if(num==1){
return 1
}else{
return num*fact(num-BigInteger.ONE)
}
}
尾递归优化
// 关键字 tailres
fun main(args:Array<String>){
var result=0
println(ollAdd(2,result))
}
tailres fun ollAdd(num:Int):Int{
if(num==0){
return 1
}else{
return ollAdd(num-1,result+num)
}
}