Kotlin的很多概念跟JAVA是有類似的,是以我應該不會像我的JAVA之旅一樣那麼的詳細,但是不用擔心,你會看的很明白的,我也是根據官方的文檔來學習的
我們在IDEA中建立一個項目Kotlin02
我們預設有一個主函數,就是main了
和JAVA一樣,他就是程式的主入口了,當然,我們還有普通的函數
這裡就可以對Kotlin的函數有一個比較清晰的認識了,首先,我們的無參 無傳回中有一個Unit,這個就是标志
這個函數沒有傳回值,和JAVA中的void是一樣的,而且我們一般是可以省略掉的,并且這裡要注意下的就是他的函數傳值
是先定義變量,再用冒号去指向類型,如a:Int b:String,并且傳回值也是用冒号去指向的,如:Int
并且我們還可以将表達式作為函數體、傳回值類型⾃動推斷的函數,如:
變量分三種,局部變量,頂層變量和可變變量
但是就兩個修飾符val 和 var
用val修飾符修飾之後,隻能一次指派後就程式設計隻讀變量了,在JAVA中可以了解為常量,這裡怎麼了解呢,可以說是JAVA中用final修飾一樣,我們來舉個例子
這裡的意思就是我定義一個Int類型的a,然後輸出a + 2,編譯器會提示錯誤,因為val修飾後無值,不可操作,然後我給他指派= 3,就可以正确輸出了
這裡還有一點要注意的就是,我們可以 val c: Int這樣定義一個變量,先不指派,但是如果你不指定值又不定義類型,比如val a,那是錯誤的,編譯器無法得知你需要做什麼操作
我們再來看下可變變量,用法是一樣的,但是注意的事,他是可變的
這裡就可以明白,a輸入2,然後a++,輸出3
還有最後一種頂層變量,頂層變量其實就是JAVA中的全局變量,這個沒什麼可說的
這個就沒什麼好說的了
字元串模闆也是比較簡單的,就是字元引用,我們來看一段例子
然後run一下,輸出

可以看出,這裡我輸出的時候就引用了變量boy和girl,隻需要前面加上$即可,有點類似于JAVA中的轉義字元
當然,還有一些更加進階的用法,比如
這裡我們可以看到輸出
也就是說,我們可以直接操作,當然,本質上這樣轉義跟下面這樣并沒有什麼差別
你覺得哪種友善呢?
if else 一直都是這種寫法,當然,簡單判斷的話,我們還可以這樣去寫
還記得我們在java中怎麼去寫函數的嘛?比如
這是一段JAVA代碼,我們可以看到,如果我們通過邏輯操作後可以讓y指派,但是也同樣的,有存在有可能傳回null的情況,但是在kotlin中,我們需要特殊處理
這裡注意,如果傳回值有可能為空的話,需要标記?問号,不然你return null會報錯
類型檢測在JAVA中都是用instanceof來處理,在kotlin中,可以用is,我們看一個例子
在這段代碼中,我說明一下,Any是所有類都有一個共同的父類,類似于Object,但是他的神通沒有Object大
而在這段代碼中,首先,我用is判斷了String,這裡可不僅是判斷,而且還類型轉換了,是以為true的話,就可以輸出a.length了,但是在沒有調用is之前,實際上是沒有length這個方法的
這段代碼中,我們定義了一個list為a,然後通過in去for循環,這裡我要說一下,就是字元串模闆的應用場景。
比如輸出的結果需要換行,那麼print(b + “\n”)你這樣用+号是錯誤的,需要print(“$b \n”),在Kotlin中,in負責for循環,即最大次數為list長度
當然,如果你想問,那我想知道下标是多少怎麼辦?
實際上in隻是提供循環的手段而已,真正要循環的東西,還是要自己決定,是以這裡,我就循環list的下标a.indices
這樣我就可以拿到下标以及對應的值,也是一樣的,當然,這個輸出我們可以用更官方的寫法來寫的:
一樣,我們可以看到列印
while循環沒什麼好講的,你按照正常的來就好了
從這段代碼大家可以看出一些東西來吧,沒錯,實際上Kotlin中的when表達式就是JAVA中的switch語句塊 -> 相當于case
我們通過int可以判斷x是否在1-10的區間,當然,區間的用法還是比較多的,比如數列疊代等,這些我們後面會詳細講到
集合在我們上面for循環的時候就已經出現過
集合的用處很廣泛,我們在後面還會細講,這裡舉一個例子:
我們先看下輸出結果
這個題出的有點粗糙,大家看的懂就行,意思就是我們隻有三種水果給到三個喜歡吃的投票員,他會給我相應的分數,最後超過5分就合格,然後我們來分析下這個題目
首先我們定義了一個集合fruit來表示我目前的水果,然後我定義fractions來進行分數的累加,開始循環并且判斷誰喜歡吃,給幾分,最後判斷是否大于5,
題目很簡單,但是我們的邏輯也是從這裡開始萌發的
這些大概就是Kotlin的大緻介紹了,實際上這門美麗的語言不止是這些内容,當你已經了解了這些之後,我們就可以進行下一個環節,正在的開始沒一個知識點的細講了
<a href="https://github.com/LiuGuiLinAndroid/Kotlin">Kotlin</a>