Kotlin學習(一):基本語法

今天說一下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從新賦值,看看會出現什麼結果:設計

Paste_Image.png

能夠看到編譯器報錯,因此:指針

  • var - 用於定義可變變量
  • val - 用於定義只讀變量

變量類型,和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  //布爾

使用可空值及 null 檢測

開發過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一些新的操做符

1.安全調用操做符
var length =str?.length

若是當str不爲null時候就會返回str.length,不然返回null。

2.Elvis操做符
val length2 = str?.length ?: -1

若是當str不爲null時候就會返回str.length,不然返回-1。

3.!!操做符
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
可返回null的函數
fun returnNull():String?{
    return null
}

以上就是,今天學習的內容,後續再說選擇結構、表達式、循環結構 等。

以上資料,有部分參考自:kotlin入門之"null"

相關文章
相關標籤/搜索