中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

黃驊市網(wǎng)站建設(shè)價(jià)格新聞發(fā)布

黃驊市網(wǎng)站建設(shè)價(jià)格,新聞發(fā)布,中山企業(yè)建網(wǎng)站,濟(jì)南做網(wǎng)站建設(shè)的公司1 變量 1.1 用法 Kotlin中的變量定義有2個(gè)關(guān)鍵字,val和var val用來定義不可變變量,第一次賦值后就不能再被修改了, var定義可變變量, 隨便修改。一個(gè)好的編程習(xí)慣是, 能用val的就不要用var, 原因是安全&a…

1 變量

1.1 用法

Kotlin中的變量定義有2個(gè)關(guān)鍵字,valvar
val用來定義不可變變量,第一次賦值后就不能再被修改了, var定義可變變量, 隨便修改。一個(gè)好的編程習(xí)慣是, 能用val的就不要用var, 原因是安全, 這也是Kotlin中強(qiáng)制讓你指明變量是否可變的原因。
針對變量定義, Kotlin有一個(gè)非常重要的機(jī)制, 類型自動(dòng)推導(dǎo), 那意味著可以告別C/C++, Java, 等語言中非常繁瑣的變量定義方法。

1.2 對比示例

上幾個(gè)例子感受一下這種變量定義的簡潔之處吧。
Kotlin定義方式:

val name = 'leo'
var age = 18

python定義方式:

name = 'leo'
age = 18

java定義方式:

string name = 'leo';
int age = 18;

簡潔性方面, 高下立判。 python yyds! Kotlin也還不錯(cuò)。 但這里不是為了比較不同編程語言, 僅僅是為 了對比加深印象。

上面的例子中, Kotlin就省略了類型定義, 其實(shí)是有編譯器自動(dòng)幫我們推導(dǎo)的。類型自動(dòng)推導(dǎo)可以滿足大多數(shù)的要求, 但有些場景類型是無法自動(dòng)推導(dǎo)出來的,比如延遲賦值等場景, 這個(gè)時(shí)候還是需要手動(dòng)指明變量類型的。如果需要手動(dòng)指明的話, 方法是在變量名后加: 變量類型, 如:

val name : String = 'leo'
var age : Int = 18

寫法上還是比較自然的。

2 函數(shù)

編程中經(jīng)常會有函數(shù)和方法兩個(gè)術(shù)語, 其實(shí)兩者完全一樣, 沒有任何區(qū)別, 習(xí)慣叫法不同而已。
函數(shù)就是一堆代碼的集合,為了方便, 把多條代碼封裝在一起。

2.1 函數(shù)寫法

直接上個(gè)例子,對例子講解吧:

fun myFunc(name: String, age: Int) : Int{return 0
}

要點(diǎn)如下:

  • 1 函數(shù)定義用關(guān)鍵字fun(function的縮寫)
  • 2 myFunc是函數(shù)名, 建議起名遵循命名規(guī)范以及見名知意的原則
  • 3 小括號中是函數(shù)可以接受的入?yún)?#xff0c;按照 變量名:變量類型的格式書寫, 沒有入?yún)⒖梢钥罩粚?/li>
  • 4 小括號外的:Int定義了返回值類型, 同樣的, 沒有返回值也可以省略
  • 5 {}中的是函數(shù)體, 也就是具體實(shí)現(xiàn)的代碼, 只有一行的話可以省略大括號。

2.2 對比示例

python寫法:

def myFunc(name, age):return 0 

java寫法:

public static int myFunc(string name, int age){return 0;
}

3 條件語句

3.1 常規(guī)的if else

fun getScore(score: Int){if (score>80){print("Very good")}else if (score>60) {print("Good")}else {print("Bad")}	
}

上面是常規(guī)的 if else 語句,比較簡單直觀,應(yīng)該不會過多講解。

3.2 簡潔而強(qiáng)大的when

when語句相當(dāng)于其他編程語言中的swith case 語句, 但是更加簡潔和強(qiáng)大。

fun getScore(score: Int){when(score) {80-> print("Very Good")60-> print("Good")else -> print("Bad")}
}

語法要點(diǎn)是, 在when中傳入一個(gè)任意類型的參數(shù), when的結(jié)構(gòu)體中定義一系列的條件, 格式是:
匹配值 -> {執(zhí)行邏輯}。 當(dāng)執(zhí)行邏輯只有一句時(shí), 可以省略{}。 也就得到了上面代碼的寫法。

注意上面用when語句寫的代碼功能與上面用if else寫的不一樣。因?yàn)閣hen接收的是一個(gè)參數(shù), 而上面if else 中的條件是一個(gè)表達(dá)式。 那這時(shí)候就可以用無參數(shù)的when表達(dá)式了。

fun getScore(score: Int){when {score>80 -> print("Very Good")score>60 -> print("Good")else -> print("Bad")}
}

注意代碼的變化, 因?yàn)闊o參數(shù)傳入,when后面的括號不需要了, 表達(dá)式的計(jì)算放在when的結(jié)構(gòu)體里面。 這個(gè)代碼的功能就跟上面的if else定義的完全一致了。

4 循環(huán)語句

4.1 while循環(huán)

var index =5 
while (index>0) {println(index)index --
}

輸出 5 4 3 2 1

var index =5 
do {prinltn(index)index --}
while (index>0) 	
}

輸出 5 4 3 2 1

4.2 for循環(huán)

Kotlin的for in 循環(huán)與python非常類似, 基本語法是for (變量 in 可迭代對象), 可迭代對象包括數(shù)組, 列表等等。

for (index in 1..10)println(index)

上面的1…10是一個(gè)區(qū)間, 它是一個(gè)可迭代的對象。 ..是創(chuàng)建兩端閉區(qū)間的關(guān)鍵字。 也就是說, 上面的區(qū)間是包含1和10的。 通常我們用的左閉右開區(qū)間多一些, 這個(gè)時(shí)候用until, 1 until 10, 就是1到9,不包括10。 還能通過step控制步長, downTo可以實(shí)現(xiàn)降序, 10 downTo 1 就是從10 到1.

for (index in 1..10 step 2)println(index)

5 類

類是面向?qū)ο缶幊讨凶钪匾母拍盍恕?/p>

5.1 類的定義

先上個(gè)示例:

class Person() {val name = "leo"val age = 18fun getInfo() {print("name is: $name , age is: $age.")}
}
fun main() {val person = Person()person.getInfo()
}

類的定義用關(guān)鍵字classPerson是類名, 括號中可以填入構(gòu)造方法的參數(shù),如果沒有參數(shù)可以為空, 但是括號不能省。 {}中的是類的實(shí)現(xiàn), 類中可以定義變量和函數(shù)。 在 val person = Person() 這句話是實(shí)例化一個(gè)對象。

上面是最簡單的類的定義方法。 其實(shí)是跟python比較相似的, 甚至比python還要簡潔一些。 為了加深印象, 看下python是怎么寫的:

class Person():def __init__():self.name = "leo"self.age = 18def getInfo():print(f"name is {self.name}, age is {self.age}.") 
if __name__ = __main__:person = Person()person.getInfo()

上面代碼中的__init__是python的構(gòu)造函數(shù),可以帶參數(shù),也可以不帶參數(shù), 上面的定義中就是不帶參數(shù)的。 Kotlin中也有init構(gòu)造函數(shù),而且跟python非常類似。

說幾點(diǎn)主要不同:

  • Kotlin中的 Person(), 括號里面是傳入構(gòu)造參數(shù)的, 上面因?yàn)槲覀儧]有傳入?yún)?shù), 所以是空。而python Person() 括號中是填入被繼承的父類的, 至于構(gòu)造參數(shù)的是在__init__中。
  • Kotlin中的 Person(), 括號里面是傳入構(gòu)造參數(shù)的,如果想在構(gòu)造這個(gè)類的時(shí)候還想有一些邏輯處理,那就需要寫init構(gòu)造函數(shù)了, 一般情況下都不需要。

5.2 類的繼承

最簡單的繼承語法是: class 類名():被繼承的父類()
如我們定義一個(gè)Student類繼承上面的Person類。

class Student(): Person(){fun getInfoNew() {getInfo()}
}
fun main() {val student = Student()student.getInfoNew()
}

輸出

name is: leo , age is: 18.

上面的例子中可以清晰地體現(xiàn)繼承, 繼承可以繼承到父類的變量和方法。

注意Kotlin的類默認(rèn)不能繼承, 要想能被繼承, 需要用open關(guān)鍵字修飾

上面的類都是不帶構(gòu)造參數(shù)的, 但是通常我們定義的類都是帶構(gòu)造參數(shù)的。 帶構(gòu)造參數(shù)的類定義稍微復(fù)雜一些, 如下:

open class Person(val name: String, val age: Int) {fun getInfo() {print("name is: $name , age is: $age.")}
}class Student(val sex: String, name: String, age:Int): Person(name, age){fun getInfoNew() {getInfo()}
}
fun main() {val student = Student("man", "leo",18)student.getInfoNew()
}

帶參數(shù)的類定義有以下幾點(diǎn)需要注意:

  • 1 構(gòu)造參數(shù)需要用關(guān)鍵字val 或者var, 這點(diǎn)跟函數(shù)定義不同, 函數(shù)定義不需要這些關(guān)鍵字。
  • 2 子類的構(gòu)造函數(shù)比較要調(diào)用父類的構(gòu)造函數(shù), 因?yàn)楦割怭erson有2個(gè)構(gòu)造參數(shù)name 和age, 所以子類定義中也必須帶上這2個(gè)參數(shù)。

5.3 數(shù)據(jù)類 data class

數(shù)據(jù)類算是一種特殊的類, 與一般的類相比,需要實(shí)現(xiàn)equals()、hashCode()、toString()這幾個(gè)方法。
數(shù)據(jù)類一般都是用來定義各種數(shù)據(jù)的, 用一個(gè)類來實(shí)現(xiàn)方便管理。
這幾個(gè)方法的實(shí)現(xiàn)實(shí)際上固定的模式。 所以Kotlin中已經(jīng)幫我們實(shí)現(xiàn)好了, 只需要簡單地加個(gè)data關(guān)鍵字就可以了。

data class myData(val brand:String, val price :Int)
fun main() {var mydata = myData("Apple", 5999)var mydata1 = myData("Huawei", 4999)println(mydata)println("mydata equal to mydata1: ${mydata==mydata1}")
}

輸出:

myData(brand=Apple, price=5999)
mydata equal to mydata1: false

注意上面的 == 判斷調(diào)用的就是equals() 方法。

5.4 單例類 object

單例類也是一種特殊的類, 單例類的對象在全局只能存在一個(gè)。 在Kotlin中定義單例類非常簡單, 把class關(guān)鍵字換成object就可以了。

object Singleton {fun func1(){println("this is singleton")}
}fun main() {Singleton.func1()
}

單例類沒有構(gòu)造函數(shù),因此Singleton后面不帶()。
調(diào)用單例類的方法跟其他語言中調(diào)用靜態(tài)方法一樣, 直接用類名調(diào)用, 不需要實(shí)例化(實(shí)際上, 因?yàn)闆]有構(gòu)造函數(shù), 也沒法實(shí)例化)。

6 其他

  • 1 Kotlin的語句后面不用;
  • 2 Kotlin中的雙引號和單引號作用是不一樣的, 字符串用雙引號
http://www.risenshineclean.com/news/53746.html

相關(guān)文章:

  • 長沙網(wǎng)站制作工作室知名公司關(guān)鍵詞有哪幾種
  • 微網(wǎng)站 制作平臺最佳bt磁力狗
  • 一個(gè)做BAT筆試題的網(wǎng)站關(guān)鍵詞名詞解釋
  • 網(wǎng)站后臺圖片上傳失敗福建百度seo排名點(diǎn)擊軟件
  • 撩人的網(wǎng)站怎么做看網(wǎng)站時(shí)的關(guān)鍵詞
  • WordPress更改網(wǎng)站地址抖音seo排名系統(tǒng)哪個(gè)好用
  • 如何給別人做網(wǎng)站成都私人網(wǎng)站制作
  • 巴中網(wǎng)站制作公司公司怎么做網(wǎng)站推廣
  • 輕博客網(wǎng)站開發(fā)去了外包簡歷就毀了嗎
  • 傳世手游新開服網(wǎng)站網(wǎng)站首頁不收錄
  • 做網(wǎng)站用什么后綴好網(wǎng)站模板
  • 淘寶網(wǎng)站建設(shè) 推廣 上海濟(jì)寧百度推廣開戶
  • thinkphp做雙語網(wǎng)站百度知道app官方下載
  • 成都優(yōu)化網(wǎng)站哪家公司好seo優(yōu)化網(wǎng)站的手段
  • 把自己做的網(wǎng)站進(jìn)行app封包騰訊云域名注冊官網(wǎng)
  • 對小米網(wǎng)站的建設(shè)意見青島新聞最新今日頭條
  • 想注冊一個(gè)做網(wǎng)站的公司企業(yè)營銷
  • 開家做網(wǎng)站公司有哪些合肥關(guān)鍵詞排名提升
  • 修改公司網(wǎng)站東莞推廣公司
  • 深圳哪個(gè)公司做網(wǎng)站好網(wǎng)站關(guān)鍵詞seo費(fèi)用
  • 網(wǎng)站制作零基礎(chǔ)學(xué)習(xí)3步打造seo推廣方案
  • 銅仁市城鄉(xiāng)住房與建設(shè)局網(wǎng)站什么是seo?
  • 織夢五彩婚紗源碼網(wǎng)_婚慶策劃網(wǎng)站php源碼今日油價(jià)92汽油價(jià)格
  • 網(wǎng)站開發(fā)情況百度公司排名多少
  • wordpress如何壓縮圖片優(yōu)化推廣服務(wù)
  • 做網(wǎng)站的要求貴陽百度seo點(diǎn)擊軟件
  • 做網(wǎng)站公司哪個(gè)品牌好免費(fèi)推廣的方式有哪些
  • 教做世界美食的網(wǎng)站西安百度快速排名提升
  • 營銷型網(wǎng)站的名詞解釋寶雞seo排名
  • 微信開發(fā)者工具下載官網(wǎng)下載seo軟文代寫