1. 程式人生 > 其它 >Kotlin的基礎語法(一) | E5

Kotlin的基礎語法(一) | E5

  上節課我們講了如何編寫一個最簡單的APP,並且我們已經執行在真機上看到了效果。這節課我們要學習Kotlin語言的基礎語法部分,考慮到我們文章的目標讀者都是初學者,可能對Kotlin語言不是很熟悉,如果你之前有過其他語言,亦或是Java語言的基礎,那麼你學Kotlin會很快,一個有程式語言基礎的開發者,1-2周就可以上手開發程式了。如果你是初學者可能要根據你具體的情況而定,時間就不一定了。所以我們要多加練習,孰能生巧。

  kotlinlang/docs/basic-syntax.htm

  提示:本來打算加一個連結自動跳轉,但是Kotlin官網沒有在國內備案,所以加不進來,大家自行跳轉訪問吧。

  上面的網址就是Kotlin官網對基礎語法部分的敘述,既然我們要學Kotlin,就一定要去它的源頭去學,這樣學起來才會便捷和快速。因為Kotlin官網都是英文版的,所以大家學起來可能會很吃力。我的英語水平也有限,我就拋磚引玉,初步的翻譯一下,如果大家有不明白的可以去官網讀原文。

  如果你想單獨上機實操Kotlin,那你可能要去官網下載Kotlin的執行環境,配置好了開發環境之後就可以寫程式碼了。但是我們這裡主要是講Android開發,所以我可能不會配置這個環境,如果想練習可以在AS裡面實操,後面我們會大量使用Kotlin語言去開發功能。如果你需要配置這個環境,就按下面的連結去做,如果不需要就不用管了。

  //使用IDE開發Kotlin程式

  kotlinlang/docs/getting-started.html#create-your-powerful-application-with-kotlin

  //使用命令列開發Kotlin程式

  kotlinlang/docs/command-line.html#install-the-compiler

  OK,我們進入正題。

  包的定義和匯入

  package my.demo

  import kotlin.text.*

  這個包的定義和匯入我在上節課已經初步地講解過了,這裡我補充一下,Kotlin裡的package定義和Java的不一樣,Java的要求包名和目錄必須一致,否則就會報錯。而Kotlin對目錄結構沒有要求,任意放置。雖然Kotlin對檔案位置沒有要求,但你自己要管理好這個檔案的位置,保證自己知道它們的對應關係。我比較推薦包名和目錄名一致,這樣對初學者比較友好,所見即所得。

  程式入口

  每個程式都會有一個程式入口點,這個程式入口點就是一個程式的大門,想要執行這個程式,必須經過這個大門,我們經常叫它main函式或main方法。Kotlin的程式入口方法是這樣的:

  fun main() {

  println("Hello world!")

  }

  這裡的fun關鍵字我上節課已經解釋過了,是定義方法的關鍵字,println方法就是讓系統列印“Hello world!”這句話,如果你是使用命令列啟動的Kotlin,那麼就會在命令列裡面顯示這句話。

  標準輸出

  print("Hello ")

  print("world!")

  //輸出:Hello world!

  println("Hello world!")

  //輸出:Hello world!

  如果我們想列印一些資訊到顯示器,就可以使用print方法,自己找找print和println有什麼不一樣?

  我們將來寫Android程式的時候,print和println方法用得很少,我們轉而會用日誌去替代,這樣會方便我們檢視日誌的輸出,這個以後我們再講。

  方法

  fun sum(a: Int, b: Int): Int {

  return a + b

  }

  我們看到方法是用fun關鍵字定義的,sum是方法的名詞,“()”內是方法的引數列表,a表示變數名稱,Int是a變數的型別,中間“:”是用於區分變數名稱和變數型別的。以此類推,後面的b變數與a變數的定義方式是一致的。在“()”後面的Int是方法的返回值型別,中間的“:”是用於區分方法頭部和返回型別的。後面的“{ }”表示方法的作用域,或者叫方法體。作用域的意思就是屬於這個方法的區域,在這個區域內的程式碼都屬於這個方法。return的意思是經過一系列計算,我們要把計算的結果返回給呼叫方,這裡就用return去返回。

  fun sum(a: Int, b: Int)=a + b

  在Kotlin裡面也可以把方法當做表示式使用,上面程式碼的意思是sum方法會計算a+b的值,並返回給呼叫方。

  fun printSum(a: Int, b: Int): Unit {

  println("sum of $a and $b is ${a + b}")

  }

  //省略Unit

  fun printSum(a: Int, b: Int) {

  println("sum of $a and $b is ${a + b}")

  }

  有時候我們呼叫方法並不需要返回值,這時就用Unit去顯示的宣告該方法不需要返回值。不過我們常用的方式是省略掉Unit,這樣可以減少我們不必要的編碼工作,大家知道這個原理就可以了。

  變數

  val a: Int=1

  val b=2 //型別推斷

  val c: Int //當我們不需要初始化值的時候,需要提前給定變數型別

  c=3 //延遲賦值

  var x=5 //型別推斷

  x +=1

  Kotlin的變數分為兩種,val關鍵字宣告的變數只能賦值一次,也就是說類似常量。而var關鍵字宣告的變數可以多次賦值,這裡類似普通的變數。

  類和例項

  class Shape

  Kotlin裡面定義類特別簡單,直接就是class關鍵字+類名。類我在上節課已經做了描述,如果有不懂的可以翻看上節課,或者去訪問這個連結類-程式設計術語,有不明白的可以在下面評論區留言。

  class Rectangle(var height: Double, var length: Double) {

  var perimeter=(height + length) * 2

  }

  當然了,類也是可以傳引數的,類似方法的引數列表,不過這裡的方法我們稱為建構函式。是指用於建立該類時所必要的引數。

  open class Shape

  class Rectangle(var height: Double, var length: Double): Shape() {

  var perimeter=(height + length) * 2

  }

  類也可以繼承,繼承大家可以理解成子承父業。子類會把父類的所有公開的特性都繼承下來,包括屬性和方法。Kotlin預設定義的類是final修飾的,final是Java語言的關鍵字,大家可以檢視這個連結Final-Java關鍵字,做了解。關於繼承的概念,大家可以檢視這個連結繼承-面向物件。

  註釋

  // This is an end-of-line comment

  /* This is a block comment

  on multiple lines. */

  在寫程式碼的時候,避免不了要對關鍵程式碼做註釋,以免日後時間一長,就忘記程式碼具體是做什麼用的了。

  Kotlin的註釋分為行註釋和塊註釋,非常簡單。

  字串模板

  var a=1

  // simple name in template:

  val s1="a is $a"

  a=2

  // arbitrary expression in template:

  val s2="${s1.replace("is", "was")}, but now is $a"

  我們在拼接字串的時候,經常需要對變數的值進行拼接,Kotlin提供了非常方便的字串模板,用法是“$變數名”,去引用變數的值。也可以用“${表示式}”來呼叫內建的函式。

  好了,我們Kotlin基礎語法課程因為內容比較多,我打算分兩期來講,下一課我們講下半部分。相信你如果把整個課程學完,你的Kotlin基礎知識就齊備了,我們開發Android程式就有了一個堅實的基礎,等後續遇到更難的問題,我們再繼續講Kotlin高階部分的用法。

  還是老規矩,如果大家有什麼問題,可以在評論區留言,我會認真解答。