在程式開發過程中,經常會遇到空指標異常的問題,如果對這個問題處理不當還可能會引起程式的崩潰,因此在kotlin中,為了避免出現空指標異常的問題。引入了null機制。
kotlin變數分成兩種型別,一種是可空型別的變數,一種是非空型別的變數。
一般情況下,乙個變數預設是非空型別。
當某個變數的值可以為空時,必須在說明處的資料型別後新增 「?」 來標示該引用可為空。
var name:string // 宣告非空變數
var age:int?
// 宣告可空變數
接下來通過一段**來學習如何判斷變數是否為空,以及如何使用可空變數:
fun
main
(args:array
)else
}
上一小節,可空變數在使用時需要通過語句進行判斷,然後再進行相應的操作,這樣的使用方法還是比較複雜。
為此kotlin提供了乙個安全呼叫符 「?.」 ,專門用於呼叫可空型別變數中的成員方法或屬性,其語法格式為 「變數?.成員」 。
其作用是判斷變數是否為null,如果不為null才呼叫變數的成員方法或者屬性。
**如下:
在使用安全呼叫符呼叫可控變數中的成員方法或屬性時,如果當前變數為空,則會返回乙個null值,但有時即使當前變數為null,也不想返回乙個null值而是指定乙個預設值,此時該如何處理呢?
為了解決這樣的問題,kotlin提供了乙個elvis操作符(?:),通過elvis操作符(?:)可以指定可空變數為null時,呼叫該變數中的成員方法或屬性的返回值。其語法格式為「表示式?.表示式」。
如果左側表示式非空,則返回左側表示式的值。否則返回右側表示式的值。
當且僅當左側為空時,才會對右側表示式求值。
**如下:
除了通過使用安全呼叫符(?.)來使用可控型別的變數之外,還可以通過非空斷言(!!.)來呼叫可空型別變數的成員方法或屬性。
使用非空斷言時。呼叫變數成員方法或屬性的語法結構為「變數!!.成員」。
非空斷言會將任何變數(可空型別變數或者非空型別變數)轉換為非空型別的變數,若該變數為空則丟擲異常。
**如下:
從執行結果可以看出,程式丟擲了空指標異常,如果變數age賦值不為空,則程式可以正常執行。部落格為個人收集學習,供大家交流學習。
freemarker空值處理
二 空值處理 如果empty標籤沒有在servlet中新增key或者值為null,會報錯 empty value expression newtag is undefined。有人說這是個好的控制錯誤的機制,但本人不這麼認為,因為空值太常見了,誰知道什麼時候裡面就成空值了?每個變數理論上都有可能。難...
空值NULL處理
1.空值 null 處理 查詢籍貫為null同學 如果判斷乙個欄位的的值是不是null,需要使用is關鍵字,不能使用 select from tbstudent where stuaddress isnull 查詢籍貫不是null的所有同學 select from tbstudent where s...
處理Null(空)值
如果將null設定給物件的屬性,程式會報錯。例如 如果myblog.settitle null 程式會報錯。如果引數傳了乙個空值,那麼jdbc type對於所有的jdbc允許為空的列來說是必須指定的。解決方法 在引數中指定jdbctype屬性,這個屬性只在insert,update,delete的時...