Basic Syntax 包的定義
package com.doctorqimport java.util.*fun main(args:Array<String>){ println("HelloWorld")}
這裡面的包定義和Java有一點不同,它和檔案所在的路徑沒有關係,但是編譯過後,卻會按照包名來產生路徑
函數定義 帶傳回值的函數
fun sum(a:Int,b:Int):Int{ return a+b}
函數關鍵字為fun(少敲幾個字母了),參數名和類型要倒敘,傳回值用:後面跟類型。這個很Scala
而且調用函數,沒有對象的概念,直接調用了。
(編譯過程有點慢啊) 運算式函數
fun sum(a: Int, b: Int) = a + b
無傳回值的函數
Unit關鍵字表示
fun printSum(a: Int, b: Int): Unit { println("sum of $a and $b is ${a + b}")}
也可預設
fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a + b}")}
本地變數
常量,關鍵字val
val a:Int = 1val b = 1
變數,關鍵字var
val c c = 1
這種運算式在REPL中無法實現報錯:
所以還是用IDEA展示下
注釋
可以使用雙斜杠//注釋一行語句,或者/**/的格式備註陳述式塊
格式化字串
在字串中輸出字串,以$+變數名的形式就可以直接讀取字串的值
val name:String="doctorq"println("Hello World,$name")
字串中調用函數
val name:String="doctorq"val s = "Hello World,$name"val age = "27"val s2 = "${s.replace("World","Girl")},I am $age"
條件運算式
正常語句
fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { return b }}
條件運算式
fun maxOf(a: Int, b: Int) = if (a > b) a else b
這個很scala,看下scala的定義:
一模一樣,兩者利用的是最後一個語句塊作為傳回值,無需用return返回。 空值安全檢查
對於可能返回空值的函數,必須標註出來,在傳回值類型後面跟?表示,比如有一個函數返回Int值,如果可能返回空值,那就要寫成Int?