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)
}
}

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