首先從基本類型開始:
與java相比像integer,float或者boolean等類型仍然存在,但是它們全部都會作為對象
存在的,既然是對象,從命名就可以知道,以後使用首字母都會變成大寫的,這個你待會會看到。在這裡與java不同的還有所有的數字類型,都不會自動轉型,必須要做一個明确的類型轉換
val i:Int=7
val d: Double = i.toDouble()
val c: Char='c'
val i: Int = c.toInt()
val s: String = "Hello Word"
val s1 = "Hello Kotlin"
var c1:Char = s1[1]
從上面的代碼片段可以看到,定義一個變量的方式與之前也不一樣了
val /var 分别代表了不可變量,變量(val與java 中的final 非常相似)
格式也變成了 (變量名稱:類型 = 值) 這是标準的寫法,
也可以(變量名稱:值) 如: val s = "abc" 這裡編譯時會對變量s做一個類型的預測,也就是說系統會自動幫我們指定一個它認為比對的類型。
在kotlin中String 類型可以直接被當做一個字元數組來通路,周遊(這裡不示範了自測吧)
String 還有字元串模闆
字元串可能包含模闆表達式,即被評估的代碼片段,其結果連接配接到字元串中。
模闆表達式以美元符号($)開頭,由簡單名稱組成:
val i = 10val s = "i = $i" // evaluates to "i = 10"
或大括号中的任意表達式:
val s = "abc"val str = "$s.length is ${s.length}" // evaluates to "abc.length is 3"
關于不可變在Kotlin(和其它很多現代語言)中是一個很重要的概念。
一個不可變對象意味着它在執行個體化之後就不能再去改變它的狀态了。如
果你需要一個這個對象修改之後的版本,那就會再建立一個新的對象。
這個讓程式設計更加具有健壯性和預估性。在Java中,大部分的對象是可變
的,那就意味着任何可以通路它這個對象的代碼都可以去修改它,進而
影響整個程式的其它地方。不可變對象也可以說是線程安全的,因為它
們無法去改變,也不需要去定義通路控制,因為所有線程通路到的對象
都是同一個。是以在Kotlin中,如果我們想使用不可變性,我們編碼時
思考的方式需要有一些改變。一個重要的概念是:盡可能地使用 val 。
位運算符:
位運算也有一點不同。在Android中,我們經常使用‘&’,‘|’ 在這裡被分别 and,or 代替:
// Java
int bitwiseOr = FLAG1 | FLAG2;
int bitwiseAnd = FLAG1 & FLAG2;
// Kotlin
val bitwiseOr = FLAG1 or FLAG2
val bitwiseAnd = FLAG1 and FLAG2
其他類型基本沒什麼變化!
接下來是屬性,我們可以在代碼中建立一個類
image.png
image.png
接下來你會得到一個類嘗試編寫一個屬性,并調用
在你建立的類中添加下行代碼():
val name : String = "test name"
可以試着在我們的MianActivity 中調用,順便使用一下字元串模闆:
val name = Person().name
Toast.makeText(this,"$name.length is ${name.length}",Toast.LENGTH_SHORT).show()
從上面的代碼我們通過Person().name 得到了Person 類中name的值,并建立了一個字元串來接收(如果沒有任何指定,屬性會預設使用getter和setter,是以不要疑惑跟java的public屬性差別)
,最後通過Toast 将字元串以模闆的方式輸出。看結果
image.png
有圖有真相,屬性調用成功,而且使用模闆爽了一把!!
下一篇:類,函數的使用