Kotlin函数入门

main() 程序入口
println() 打印

函数声明基本格式:fun 函数名(参数:参数类型){函数体}
0、Boolean运算
Math.sqrt(5.0) //sqrt()–开根号,获取5.0的开根值,即根号5的值
Math.pow(2.0,100.0) //pow()–幂函数,计算2的100次方

1、命令行交互式工具
不实用,内容省略。
2、函数加强
函数命名格式说明:
fun 函数名(参数:参数类型):返回值类型{
函数体
}

如果没有返回值,使用 :Unit 标识,也可以省略不写
返回值也是使用 return 返回。
3、函数声明练习题
内容省略
4、字符串模板

“ ” ,被两个双引号包裹的内容是普通字符串,支持转义字符
“”“ ”“” ,被一对三引号包裹的内容是原样字符串,不支持转义字符,其中的内容被定义成什么样,输出的时候就是什么样。
字符串模板格式:${占位字符串}

5、条件控制–if、else
基本格式:
if(条件){
//DO STH
}else{
//DO STH
}

详细可参考:https://www.jianshu.com/p/b8eb0fe28dad
6、字符串比较
var str1=“张三” // = 是赋值
var str2=“李四”

boolean flag=str1==str2 // == 是比较,等同于 Java中的 equals()

可以使用 == 比较字符串

也可以使用 equals(,) 方法比较字符串,该方法第二个参数表示是否忽略大小写,true–忽略大小写,false–不忽略大小写。

equals(,) 中第二个参数为 true时 效果等价于Java中的 equalsIgnoreCase()

7、空值处理

以 null 表示空值
kotlin 中定义方法时,默认接收的是 非 null 参数。
如果定义某个方法可以接收 null参数,则在声明方法参数时在参数后面加上?。示例如下:

fun test(str1:String?){ //String 后面的 ? 就表示该方法可以接收 null 作为参数
//DO STH
}

8、When表达式
类似于Java中的switch
基本使用格式:
when(变量){
分支A -> 表达式
else -> 表达式
}

带有返回值的When表达式:
var result=when(变量){
分支A -> 表达式(要有返回值,最终将值赋给result)
else -> 表达式(要有返回值,最终将值赋给result)
}

详细参考:https://www.jianshu.com/p/b8eb0fe28dad
9、Loop和Range

声明一个区间数组

var nums1=1…100 //表示我们声明了一个闭区间数组,其中包含的数值为 1-100。 … 表示闭区间
var nums2=1 util 100 //前闭后开区间,取值 1-99. util 表示前闭后开区间

for 基本循环格式

for(变量 in 数组或字符串){
//DO STH
}

带有步进的for循环

for (变量 in 数组 step 步进数量){ //所谓步进,就是递增幅度。默认步进为1
//DO STH
}

数组.reversed() //数组内容反转
数组.count() //获取数组的容量,等价于Java中的 数组.length

详细参考:https://www.jianshu.com/p/b8eb0fe28dad
0、List 和 Map
1、List

List的基本声明格式:

var list1=listOf(元素1,元素2,元素3) //声明List时主要是通过 listOf()实现

使用 for 循环同时遍历索引和索引对应的数值

for((index,value) in list.withIndex()){ //重点是 withIndex() 方法,index 接收索引,value 接收对应的值
//DO STH
}

2、Map (词典)

基本声明格式:

var map=TreeMap<键类型,值类型>()
map[key]=value

示例代码:

var map=TreeMap<String,String>() //声明 map
map[“好”]=good
map[“学习”]=study //添加键值对元素

println(map[“好”]) //取值并打印

1、函数和函数表达式
1、函数的简化
//原函数:
fun sum(a:Int , b:Int):Int{
return a+b
}

//简化后
fun sum(a:Int , b:Int):Int=a+b

2、使用 var 声明函数——函数表达式1(重点!)
kotlin 中除了使用基本的 fun 关键字声明函数外,还可以使用 var 声明。示例如下:
var i={x:Int , y:Int -> x+y} //声明函数i,接收两个Int类型参数 x、y,返回 x+y 的值
i(3,5) //调用使用 var 声明的函数 i

3、使用 var 声明函数——函数表达式2(重点!)
var j:(Int,Int)->Int={x,y -> x+y} //声明函数j,它接收的参数是两个Int, 返回一个Int,对应的表达式是 {x,y->x+y}
j(4,4) //调用函数

详细参考:https://www.jianshu.com/p/da4a93a356d6
2、默认参数和具名参数

具有默认参数值得函数声明

val Pi=3.1415926
fun getRoundArea(PI:Float=Pi , radius:Float):Float{ //为变量PI赋予了默认值 Pi,这样,调用该方法时可以不再传递PI。但,如果我们想传入的值和默认值不一致时还是需要传入的
return PIradiusradius
}

调用带有默认参数值的函数

var a=getRoundArea(3.14f,5.0f) //因为我们相传入的PI和默认值不一致,所以,需要将3.14f传入

具名参数的使用

所谓具名参数,就是调用某个方法时指明传入的参数是给哪个变量的。
var a=getRoundArea(radius=5.0f) //我们需要的PI值与默认值一致,此时不需要再传入PI值。只需要通过 radius=5.0f 声明我们传入了半径值

3、字符串和数字的转换
var a=“13”
a.toInt() //字符串转换为Int

var b=13
b.toString() //Int转换为字符串

4、人机交互–根据用户输入的数字动态计算Sum
意念交互、语音交互、眼动跟踪、体感交互、打字交互
fun main(array:ArrayList){
println(“请输入第一个数值”)
var a=readLine() //读取键盘输入的字符串内容,并赋值给a
println(“请输入第二个数值”)
var b=readLine()

var num1=a!!.toInt()  //readLine()得到的可能是null,所以此处通过 !! 断言输入不为null
var num2=b!!.toInt() 

println("${num1}+${num2}=${num1+num2}")

}

5、异常处理
异常处理格式:–同Java
try{
//可能会出错的代码块
}catch(e:Excepiton){
//出错之后的处理逻辑
}

6、递归
1、利用递归实现 阶乘函数
fun fact(a:Int):Int{
if(a==1){
return 1
}else{
return a*fact(a-1) //函数内调用函数本身就成为了递归
}
}

2、BigInteger
在上面的方法中,我们用 Int 来接收阶乘的值,但是如果我们输入 100 ,会发现最终返回的值是 0, 是因为 100的阶乘超过了 Int的范围。所以,此时我们就需要使用到 BigInteger。
BigInteger 用来表示一个超大值。
import java.math.BigInteger

fun main(array: Array) {
val num = BigInteger(“50”) //声明BigInteger常量时传入一个字符串类型的数值
println(fact(num))
}

fun fact(num: BigInteger): BigInteger {
return if (num == BigInteger.ONE) {
BigInteger.ONE
} else {
num * fact(num - BigInteger.ONE)
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章