今天說一下Kotlin的基本語法,主要包括如下部分:java
1.變量
2.操做符
3.函數安全
先來了解一下Kotlin代碼是什麼樣子吧,這是一個HelloWorld函數
package com.oppo.demo.test //包的聲明 import java.util.* // 導包,這裏能夠導入Java類,能夠正常使用 /** * 程序入口 */ fun main(args: Array<String>) { //輸出字符 代碼結尾不須要寫分號 println("Hello world") }
須要注意的是,在Kotlin中,再也不向Java那樣,代碼結尾不須要寫「;」了學習
// 這是一個行註釋 /* 這是一個多行的 塊註釋。 */ /** * 函數、類註釋 */
在Kotlin中,變量分爲只讀變量和可變變量,聲明變量的方法也和Java不一樣,和JS相似spa
//只讀變量 val name = "小明" //自動推斷出類型 val age:Int = 22 // 明確類型 val email:String //若是沒有初始值 則須要明確類型 email = "hezhao_java@163.com" //可變變量 var score = 90.5 score += 2
咱們嘗試給name從新賦值,看看會出現什麼結果:設計
能夠看到編譯器報錯,因此:指針
變量類型,和Java如出一轍code
var b1:String //字符串 var b2:Char //字符 var b3:Int //整型 var b4:Double //雙浮點 var b5:Float //浮點數 var b6:Byte //字節 var b7:Long //長整型 var b8:Boolean //布爾
開發過Java的人都知道,程序報異常了,打開控制檯一看,你確定能看到NullPinterException的存在。Kotlin的類型設計系統旨在消滅「空指針異常」,那麼是怎麼作到的呢?開發
正常狀況下,變量都不容許直接賦值爲null,好比如下這段代碼是錯誤的:rem
fun returnNull():String{ return null //error,不能賦null值 }
或者
var str:String str = null //error
那麼,有時候咱們確實須要返回null值,要怎麼作呢?
當某個變量的值能夠爲 null 的時候,必須在聲明處的類型後添加 ? 來標識該引用可爲空。
fun returnNull():String?{ return null } //變量也是同樣 var str:String? str = null
值得注意的是,當咱們使用一個可空變量的時候,編譯器會報一個錯,它會認爲這是不安全的,這種狀況下咱們須要本身去作類型檢查
if(str != null) println(str.length)
或者
var str:String? = returnNull() if(str == null){ return } //// 在空檢測後,str 會自動轉換爲非空值 println(str.length)
以上這段代碼能夠簡寫爲:
//變量也是同樣 var str:String? = returnNull() ?: return //// 在空檢測後,str 會自動轉換爲非空值 println(str.length)
那麼,這裏說一下Kotlin一些新的操做符
var length =str?.length
若是當str不爲null時候就會返回str.length,不然返回null。
val length2 = str?.length ?: -1
若是當str不爲null時候就會返回str.length,不然返回-1。
val length3 = str!!.length
若是當str不爲null時候就會返回str.length,不然乾脆拋出空指針異常。
依我看,這個操做符仍是少用吧。。。
一樣,也適用於類型轉換
//類型轉換 如不成功給個 null val s = "1" val s1: Int? = s as? Int
函數使用fun來定義,缺省返回值爲Unit,相似於Java中的void
下面列出幾種常見的函數定義
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}") }
fun sum(a: Int, b: Int): Int { return a + b }
fun sum(a: Int, b: Int) { return a + b }
fun sum(a: Int, b: Int) = a + b //這裏,可使用if做爲表達式 fun calc(a: Int, b: Int) = if(a > b) a+b else a-b
fun returnNull():String?{ return null }
以上就是,今天學習的內容,後續再說選擇結構、表達式、循環結構 等。
以上資料,有部分參考自:kotlin入門之"null"