戰士的最高境界,就是不拿盾牌也能夠開盾墻!
點擊跳轉=>熬夜再戰Android從青銅到王者-開發效率插件篇
點擊跳轉=>Unity粒子特效系列-龍卷風預制體做好了,unitypackage包直接用!
點擊跳轉=>姐姐喊我解鎖套娃新技能:FairyGUI在Unity中實作List嵌套List/立體畫廊等,玩出花兒來
點擊跳轉=>Unity新手必備5款寶藏插件–價值上千元白嫖最新版
爆肝萬字C#基礎入門大總結【建議收藏】
Android修行手冊-玩轉TextView,想不到有這么多屬性
【萬字】熬夜修行Android Studio技巧到出神入化,快速漲薪【建議收藏】
Android修行手冊之從頭到尾學Kotlin【全】
本文5.8千字,新手閱讀需要10分鐘,復習需要3分鐘 【收藏隨時查閱不再迷路】
👉關于作者
眾所周知,人生是一個漫長的流程,不斷克服困難,不斷反思前進的程序,在這個程序中會產生很多對于人生的質疑和思考,于是我決定將自己的思考,經驗和故事全部分享出來,以此尋找共鳴 !!!
專注于Android/Unity和各種游戲開發技巧,以及各種資源分享(網站、工具、素材、原始碼、游戲等)
有什么需要歡迎私我,交流群讓學習不再孤單,
👉前提
這是小空堅持寫的Android系列,歡迎品嘗,
😜變數和常量
可變變數定義:var 關鍵字
var <變數名> : <型別> = <初始化值>
不可變變數定義:val 關鍵字,只能賦值一次的變數(類似Java中final修飾的變數)
val <變數名> : <型別> = <初始化值>
變數可以不指定型別,系統自動判斷,也可以沒有初始值,但是使用前必須經過了初始化
val TempOne = "這是不可變變數"
var TempTwo = "這是可變變數"
var TempThree = "公眾號:空名先生"
val TempFour: String = ""
總之宣告之前順便有個初始化值就可,(難道靠強制寫初始值避免空指標?)
當一個變數一旦有賦值后,她就自己型別推斷出了型別,后續不能變化,比如一個變數初始值是數字,后續不能再對改變數賦值為字串,也不能呼叫其他型別里面的方法,有一個型別除外【Any】型別
😜基礎型別
雖然宣告是【var】和【val】,但是Kotlin仍然有型別【Byte】、【Short】、【Long】、【Float】、【Double】和【String】、【Noolean】,還有個【Any】型別
var numberOne:Int? = 1
var numberTwo:Int? = 1
var numberThree = numberOne
Log.e("TAG", "芝麻粒兒輸出7: 他們地址相等:" + (numberThree === numberOne))
//按照正常想法,這倆是不同的變數,應該不相等才對,結果輸出的相等,作為疑問留待以后
Log.e("TAG", "芝麻粒兒輸出7: 他們地址相等:" + (numberOne === numberTwo))
Log.e("TAG", "芝麻粒兒輸出7: 他們地址相等:" + (numberThree === numberTwo))
Log.e("TAG", "芝麻粒兒輸出7: 他們內容相等:" + (numberOne == numberTwo))
//2021-10-13 10:30:42.460 31093-31093/cn.appstudy E/TAG: 芝麻粒兒輸出7: 他們地址相等:true
//2021-10-13 10:30:42.460 31093-31093/cn.appstudy E/TAG: 芝麻粒兒輸出7: 他們地址不等:true
//2021-10-13 10:30:42.460 31093-31093/cn.appstudy E/TAG: 芝麻粒兒輸出7: 他們地址不等:true
//2021-10-13 10:30:42.460 31093-31093/cn.appstudy E/TAG: 芝麻粒兒輸出7: 他們內容相等:true \
陣列型別也是必不可少
var listOne = arrayOf(1, 2, 3)
var listTwo = intArrayOf(1, 2, 3)
var listThree = arrayListOf<String>()
listThree.add("這是")
listThree.add("陣列")
listThree.add("List")
有陣列則必然有回圈讀取,詳情可看回圈控制小節
😜字串
字串支持多行字符,利用【"””】三個雙引號,但是多行的應用場景很少,小空開發好幾款產品了也沒用到過,
var strignOne = "公眾號:"
var strignTwo = "空名先生"
if (strignOne.equals(strignTwo)) {
Log.e("TAG", "芝麻粒兒輸出6: 他們內容相等")
} else {
Log.e("TAG", "芝麻粒兒輸出6: 他們內容不等")
}
😜型別轉換
這一點和Java是有一些區別的,不再有【String. valueOf】、【Integer.valueOf】這類轉換函式,而是改成了【to】形式(直接變數后面點to出來),如:
var Temp="1234" var TempOne=Temp.toInt()
- toByte(): Byte,轉為位元組
- toShort(): Short,轉為短整型
- toInt(): Int,轉為整型
- toLong(): Long,轉為長整型
- toFloat(): Float,轉為浮點型
- toDouble(): Double,轉為雙浮點型
- toChar(): Char,轉為字符型
😜函式定義
默認的定義是這樣的,【fun】關鍵字表明是函式定義
private fun methon(height: Int): Int { //型別都是在 : 后面(注意看冒號),變數在前
return height+1;
}
也可以這樣,函式可以直接利用【=】做賦值運算
private fun methon(height: Int): Int = height + 1;
除了上面,相比Java還多了一點:函式的回傳支持判斷陳述句操作,如下
fun methonTwo(height:Int):String{
return if (height>10){
"大于10走if"
}else{
"否則走else"
}
}
而且像上面剛說的賦值符,也可以和判斷形式結合,
private fun methon(height: Int): String = if (height > 10) {
"大于10走if"
} else {
"否則走else"
};
😜匿名函式
val stringLengthFunc: (String) -> Int = { input ->
input.length
}
上例就是個匿名函式,接收一個String型別的引數,經匿名函式處理回傳字串的長度int型別,呼叫是這樣的:
val stringLength: Int = stringLengthFunc("I Love Android")
注意,匿名中的input是隨意寫的,你也可以改成別的名,不是系統的特別關鍵字
😜可變引數
在Java中是 … 符號(注意三個點),Kotlin是【vararg】關鍵字
也就是在方法定義中可以使用個數不確定的引數,對于同一方法可以使用不同個數的引數呼叫,
有意思的是Java中是可變引數,但可變的是個數,型別需要一致,(如果有大佬知道型別也能可變,歡迎瀏覽討論)
而Kotlin不僅僅支持個數,還支持不同的資料型別,
啊,寫著寫著,我突然想起來了,如果Java中可變引數寫的是Object型別,那么呼叫的時候其實也可以傳多型別啊,

👉其他
📢作者:小空和小芝中的小空
📢轉載說明-務必注明來源:https://zhima.blog.csdn.net/
📢歡迎點贊👍收藏🌟留言📝
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398522.html
標籤:其他
上一篇:【Unity 優化篇】| 優化的基本概念/意義,Unity Profiler工具的使用 以及 性能分析的方法【精華收藏】
下一篇:Python撲克牌21點小游戲
