kotlin回顧
回顧下以前我們敲過的案例
fun main(args:Array<String>){ //固定寫法,目前先記憶
println("hello kotlin") //println是打印內(nèi)容到控制臺的意思
}
作業(yè): 編寫main函數(shù), 在控制臺打印 I love kotlin
fun main(args:Array<String>){ //固定寫法,目前先記憶
println("I love kotlin") //println是打印內(nèi)容到控制臺的意思
}
用自然語言重讀HelloWorld
fun main(args:Array<String>){
println("hello kotlin")
}
計算機給我執(zhí)行一段任務(wù),
任務(wù)的入口是main方法,參數(shù)是一個字符串?dāng)?shù)組類型的
執(zhí)行的內(nèi)容是打印hello kotlin到控制臺
存儲數(shù)據(jù)
計算機程序是跟數(shù)據(jù)打交道的,我們編寫的絕大多數(shù)程序都是在處理或者記憶數(shù)據(jù),
下面我們要學(xué)習(xí)如何聲明和記憶數(shù)據(jù).
fun main(args:Array<String>){
// 計算機給我一塊空間 存儲一個值為18的數(shù)據(jù) , 這塊空間的名字為age
var age =18
println("存儲的年齡是="+age)
}
fun main(args:Array<String>){
// 計算機給我一塊空間 存儲一個值為"小華華"的數(shù)據(jù) , 這塊空間的名字為name
var name="奧娃"
println("存儲的名字是="+name);
}
在kotlin里面如果我們需要存儲一個數(shù)據(jù),只需要var一下, 給數(shù)據(jù)起個名字,放進去就行了
變量和容器
變量觀念是培養(yǎng)程序設(shè)計能力的基礎(chǔ)
因為在程序中的數(shù)據(jù)都必須通過變量來處理
處理不同的數(shù)據(jù),必須使用不同的變量類型

平時我們上街的時候,有人總會拎個小包或者手提袋什么的
裝上點兒瑣碎的東西,回家以后就取出東西來,將袋子扔到一邊去
計算機里也得用上這種小包或小袋子
把我們輸入的字符串或者數(shù)值裝起來,要的時候就取出來
逛沃爾瑪



逛沃爾瑪之前,我們準備了這樣幾種容器, 雞蛋盒, 冷藏盒, 木酒盒
如果我們買了雞蛋,只需要把雞蛋放入雞蛋盒,買了肉把肉放進冷藏盒,
買了紅酒把紅酒放入木酒盒.不同的東西放入不同的盒子里,方便管理.
數(shù)據(jù)也不易損壞.
同樣的,kotlin程序也給我們實現(xiàn)準備好了很多類型的盒子,
用于存放不同類型的數(shù)據(jù).
體會代碼
fun main(args:Array<String>){
//計算機給我一個盒子,盒子的標簽叫name, 里面放入字符串"小華華"
var name="小華華"
//盒子里面不放"小華華"了 放字符串"奧娃"
name="奧娃"
println("名字是:"+name)
}

程序正確執(zhí)行,最后打印 名字是:奧娃
fun main(args:Array<String>){
//計算機給我一個盒子,盒子的標簽叫name, 里面放入字符串"小華華"
var name="小華華"
//盒子里面不放"小華華"了 放字符串"奧娃"
name=18
println("名字是:"+name)
}

大家注意紅色錯誤,第三行代碼已經(jīng)報錯.
大家思考一下, 一個放肉的盒子適合放雞蛋么?

常見容器的類型
Byte 存儲值范圍 整數(shù)-128~127
Short 存儲值范圍 整數(shù)-32768~32767
Int 存儲值范圍 整數(shù)-2147483648~2147483647
Long 存儲值范圍 整數(shù)-9223372036854775807 ~ 9223372036854775807
Float 存儲值范圍 小數(shù),小數(shù)點可以精確到6位
Double 存儲值范圍 小數(shù),小數(shù)點可以精確到15-16位
String 存儲值范圍 字符串,用"'雙引號引起來的字符串都可以存

遇見整數(shù)一般Int夠用了, 遇見小數(shù)高精度選Double,低精度選Float,字符串就用String
類型推斷(Type inference)
類型推斷是kotlin的一大特色,我們用代碼來解釋一下
fun main(args:Array<String>){
var name="小華華"http://自動推斷name的類型是字符串類型
name=18.0//把小數(shù)18.0放入name 程序報錯
println("名字是:"+name)
}

fun main(args:Array<String>){
var age = 18 //自動推斷出age的類型是Int整數(shù)
age ="張三" //把字符串放入整數(shù)容器,程序報錯
println("年齡是:"+age)
}

顯式類型聲明
fun main(args:Array<String>){
var name
}

上面的代碼會報錯,原因是我們告知計算機給我一塊存儲空間,標簽叫name,
由于沒有指定name里面存放的內(nèi)容,kotlin無法通過類型推斷(Type inference)確定
這塊存儲空間存放什么類型的數(shù)據(jù).代碼報錯.
我們可以通過顯式類型聲明來告知計算機這塊空間的數(shù)據(jù)類型是什么
具體寫法如下,采用冒號后面跟數(shù)據(jù)類型
fun main(args:Array<String>){
var name:String
}

name顯式聲明是字符串類型,存入整型數(shù)字13報錯

name顯式聲明是字符串類型,存入字符串"13"不再報錯

注意區(qū)別
13是整型數(shù)字,"13"是字符串, 加上引號就是字符串,不加引號是數(shù)字
變量和常量
變量是一個容器,里面存放的是可以改變的數(shù)據(jù).
常量是一個容器,里面存放的是不可以改變的數(shù)據(jù).

上面的代碼我們聲明了變量name,存放String類型的數(shù)據(jù),
接下來我們在name這個容器里面分三次存放了"小華華","妮妮","奧娃"
這個name就是一個變量
有時候某個容器里的數(shù)據(jù)要求是固定不變的,我們就可以用常量聲明

上面的代碼我們定義了PI等于3.1415026,
但是在第4行,我們發(fā)現(xiàn)PI還可以修改為1.1
如果一個容器的數(shù)據(jù)我們希望他是不變的. 可以用val關(guān)鍵字聲明

采用val聲明的常量不可以被修改.
好啦,今天的車就開到這吧.大家辛苦啦
總結(jié):
- var 聲明變量
- val 聲明常量
- 不同的數(shù)據(jù)類型用不同的容器保存
- kotlin會通過類型推斷自動推斷數(shù)據(jù)類型
- 我們可以用: 來顯式的指定數(shù)據(jù)類型