1. 程式人生 > >Kotlin中常用操作符和用法介紹

Kotlin中常用操作符和用法介紹

?操作符

表示這個物件可能為空

//在變數型別後面加上問號,代表該變數是可空變數  
var name: String? = "zhangsan"  
/**
 * 如果str不能轉為Int型別,則返回null
 */
fun parseInt(str: String): Int? { 
  // (程式碼略)
}
b?.length //如果 b非空,就返回 b.length ,否則返回 null,這個表示式的型別是 Int? 。

?: 操作符

如果 r 非空,我使用它;否則使用某個非空的值 x

val l: Int = if (b != null) b.length else -1

除了完整的 if-表示式,這還可以通過 Elvis 操作符表達:

 val l = b?.length ?: -1 

如果 ?: 左側表示式非空,elvis操作符就返回其左側表示式,否則返回右側表示式。請注意,當且僅當左側為空時,才會對右側表示式求值。

!! 操作符

這會返回一個非空的 b 值 或者如果 b 為空,就會丟擲一個 NPE(空指標) 異常:

val l = b!!.length

因此,如果你想要一個 NPE,你可以得到它,但是你必須顯式要求它,否則它不會不期而至。

==與===

==判斷值是否相等,===判斷值及引用是否完全相等。

val num: Int = 128;
val a:Int? = num
val b:Int? = num
println(a == b)
print(a === b)

..符號 以及 in 和 !in 操作符

..代表從x到y,包括x和y,這是一個閉區間運算子,而until則是半閉區間運算子,代表從a到b範圍內所有的值,包括a和不包括b。 
in代表在一個區間中,!in代表不在一個區間中。

使用 in 運算子來檢查某個數字是否在指定區間內

if (i in 1..10) { // 等價於 1 <= i && i <= 10
    println(i)
}
//使用until函式,建立一個不包括其結束元素的區間
for (i in 1 until 10) {   // i in [1, 10) 排除了 10
     println(i)
}

downTo()函式

倒敘遍歷,區間內迴圈:

for (i in 4 downTo 1){
    print(i) //倒敘遍歷
}   
// print “4321”

step()函式

可以進行任意數量的迭代,而不是每次變化都是1

for (i in 1..4 step 2) print(i) // prints "13"
for (i in 4 downTo 1 step 2) print(i) // prints "42"

::符號

得到類的Class物件

startActivity(Intent(this@KotlinActivity, MainActivity::class.java))

@符號

1、限定this的型別

class User {
    inner class State{
        fun getUser(): User{
            //返回User
            return this@User
        }
        fun getState(): State{
            //返回State
            return this@State
        }
    }
}

2、作為標籤

跳出雙層for

loop@ for (itemA in arraysA) {
     var i : Int = 0
      for (itemB in arraysB) {
         i++
         if (itemB > 2) {
             break@loop
         }

         println("itemB:$itemB")
     }

}

命名函式自動定義標籤:

fun fun_run(){
    run {
        println("lambda")
    }
    var i: Int = run {
        return@run 1
    }
    println("$i")
    //匿名函式可以通過自定義標籤進行跳轉和返回
    i = run ([email protected]{
        return@outer 2
    })
    println(i)
}

從forEach函式跳出

fun forEach_label(ints: List<Int>)
{
    var i =2
    ints.forEach {
        //forEach中無法使用continuebreak;
//        if (it == 0) continue //編譯錯誤
//        if (it == 2) /*break //編譯錯誤 */
        print(it)
    }
     run [email protected]{
         ints.forEach {
             if (it == 0) return@forEach //相當於在forEach函式中continue,實際上是從匿名函式返回
             if (it == 2) return@outer //相當於在forEach函式中使用break,實際上是跳轉到outer之外
         }
     }

    if (i == 3)
    {
        //每個函式的名字代表一個函式地址,所以函式自動成為標籤
        return@forEach_label //等同於return
    }
}

as?操作符

當使用 as 轉型的時候,可能會經常出現 ClassCastException。 所以,現在可以使as?安全轉型,當轉型不成功的時候,它會返回 null。

注:在使用intent傳值的時候,會出現空字串不能用as強制轉型,這是應該使用as?

val m: Int? = a as? Int

冒號:

用於類的繼承,變數的定義 
1、型別和超型別之間的冒號前要有一個空格 
2、例項和型別之間的冒號前不要空格

//定義全域性變數時
var str: String? = null

//類的繼承與變數定義
class TestActivity<T : Serializable>(str: String) : Activity{}

型別判斷符 is

檢查某個例項是否是某個型別,如果判斷出屬於某個型別,那麼判斷後的分支中可以直接可當該型別使用,無需顯示轉換

fun getStringLength(obj: Any): Int? {
        //obj在&&右邊自動動轉換成"String"型別
        if (obj is String && obj.length > 0)
            return obj.length
        return null
    }

多行輸入符 三個雙引號

三引號的形式用來輸入多行文字,也就是說在三引號之間輸入的內容將被原樣保留,之中的單號和雙引號不用轉義,其中的不可見字元比如/n和/t都會被保留。

val str = """ 
        one
        two
            """
//等價於          
val str = "one\ntwo"       
val str =  "one" +"\n"+"two"

$操作符

字串可以包含模板表示式,及一小段程式碼,會求值並把結果包含到字串中。模板字串以美元符號$開頭,由一個簡單的名字構成:

val value:Int=5;
val str:String="the value is $value"
println("itemB:$itemB")

//字串模板
var userInfo = "name:${user.name},  age:$age"

或花括號括起來的任意表達式

val g:Int=2
val h:Int=3
val str:String="g+h=${g+h}"

轉義字串和原生字串都支援模板字串。如果想要在原生字串中使用$(它不支援反斜槓轉義),可以使用以下語法:

val str:String="""the price is ${'$'}199"""

相關推薦

Kotlin常用操作符用法介紹

?操作符表示這個物件可能為空//在變數型別後面加上問號,代表該變數是可空變數 var name: String? = "zhangsan" /** * 如果str不能轉為Int型別,則返回null */ fun parseInt(str: String): Int?

pm2常用命令用法介紹

pm2常用的命令用法介紹pm2 是一個帶有負載均衡功能的Node應用的程序管理器.當你要把你的獨立程式碼利用全部的伺服器上的所有CPU,並保證程序永遠都活著,0秒的過載, PM2是完美的,下面我們來看pm2常用的命令用法介紹吧。PM2 (github上的原始碼)是開源的基於Nodejs的程序管理器,包括守護程

python的map()函式reduce()函式的區別用法介紹

咱們先從定義上來解釋一下這兩個函式的區別: ①從引數方面來講: map(func, *iterables)包含兩個引數,第一個是引數是一個函式,第二個是序列(列表或元組)。其中,函式(即map的第一個引

linux常用時間字符串之間相互轉化

時間函數 spa lin cell form time函數 地理 -1 名稱 在Linux中經常會遇到時間和字符串相互轉化的情形,有兩個函數專門對應相應的轉化。 1、時間轉字符串函數strftime 函數原型:size_t strftime(char *s,size_t m

機器學習之numpy庫常用的函數介紹(一)

做的 string idt 維度 數據 round float 數值 array 1. mat() mat()與array的區別: mat是矩陣,數據必須是2維的,是array的子集,包含array的所有特性,所做的運算都是針對矩陣來進行的。 array是數組,數據可以是多

pm2常用的命令用法介紹(轉)

pm2常用的命令用法介紹  pm2 是一個帶有負載均衡功能的Node應用的程序管理器.當你要把你的獨立程式碼利用全部的伺服器上的所有CPU,並保證程序永遠都活著,0秒的過載, PM2是完美的,下面我們來看pm2常用的命令用法介紹吧。 PM2 (github上的原始碼)是開源的基於Nod

Python3常用語句及用法介紹(二)——條件語句

條件語句 ①if elif else條件語句 n=int(input('Enter a number:')) if n>0: print('Positive number') elif n<0: print('Negative number') else:

Python3常用語句及用法介紹(一)——print/import/賦值語句

1.print語句 ①括號括起來(自python3),逗號隔開 ②輸出時,隔開的各個字串前會自動加空格 ③需要輸出的符號可包含在字串中,也可單獨輸出,使用+號則不增加空格 ④同行列印的幾種方法 2.import語句 ①輕量化:匯入某模組的某函式 ②大塊匯入:匯入某

大資料技術學習筆記之hive框架基礎2-hive常用DMLUDF連線介面使用

一、分割槽表的介紹及使用     -》需求:統計每一天的PV,UV,每一天分析前一天的資料         -》第一種情況:每天的日誌儲存在同一個目錄中     &nbs

javaScritdelete操作符用法

js中delete操作符的使用 1.var output = (function(x){ delete x; return x; })(0); console.log(output);//0 輸出是 0。 delete 操作符是將object的屬性刪去的操作。但是這裡的 x 是並不是物件

小甲魚python教程 6—9 課筆記(常用操作符了不起的分支迴圈)

第6課 常用操作符 /(python直接是除法) %取餘 // 相除取整數(地板除法) 例子: 24 = 16 由於程式有優先順序,因此在編輯程式碼的過程中,最好用括號對計算進行規劃,可以減少程式碼錯誤率,增加可讀性,便於對程式碼的維

JSON Web Token(JWT)原理用法介紹

JSON Web Token(JWT)是目前最流行的跨域身份驗證解決方案。今天給大家介紹一下JWT的原理和用法。 一、跨域身份驗證 Internet服務無法與使用者身份驗證分開。一般過程如下。 1. 使用者向伺服器傳送使用者名稱和密碼。 2. 驗證伺服器後,相關資料(如使用者角色,登入時間等)將儲存在

Kotlin常用集合的使用

集合在程式中的比例的很重的,Kotlin針對集合進行了更加簡潔和有效的封裝,這邊文章就簡單的介紹一下list,map,set這三個最常用集合的使用。 首先在Kotlin中,明確區分了集合的只讀和可變。 Iterable介面聲明瞭Kotlin中集合的通用方法,是最基本的介面。 Mutabl

pythonFraction()方法的用法介紹

小編是想將字串的分數,轉換為浮點型的小數才接觸到這個方法的。 原始碼如下: class Fraction(numbers.Rational): """This class implements rational numbers. In the two-argument fo

JSON Web Token(JWT)使用步驟說明 JSON Web Token(JWT)原理用法介紹

在JSON Web Token(JWT)原理和用法介紹中,我們瞭解了JSON Web Token的原理和用法的基本介紹。本文我們著重講一下其使用的步驟: 一、JWT基本使用 Gradle下依賴 : compile 'com.auth0:java-jwt:3.4.0' 示例介紹: im

效能測試工具VTune的功能用法介紹

1.VTune介紹        VTune視覺化效能分析器(Intel VTune Performance Analyzer)是一個用於分析和優化程式效能的工具,作為Intel為開發者提供的專門針對尋找軟硬體效能瓶頸的一款分析工具,它能確定程式的熱點(hotspot),找

kotlin構造方法函式引數(二)

Kotlin中的引數與Java中有些不同。如你所見,我們先寫引數的名字再寫它的類 型: fun add(x: Int, y: Int) : Int { return x + y } 我們可以給引數指定一個預設值使得它們變得可選,這是非常有幫助的。這裡有一個例子,在Activ

swift常用關鍵字標識

******extention:擴充套件 ********@escaping 閉包只有在函式中做引數時才會區分逃逸閉包和非逃逸閉包。 Swift 3.0之後,傳遞閉包到函式中的時候,系統會預設為非逃逸閉包型別(NonescapingClosures)@n

HTML常用標籤用法總結

1、HTML分塊--------< div> 說起HTML的標籤,不得不提起的就是< div>,在製作一個網頁的時候,應該先將他們劃分為許多個塊,再在這些塊中進行操作。 整個電腦能夠顯示是因為顯示屏上一個一個的小顆粒,如下寬度:1920px,高度1080px。所以在定義<

Kotlin 關鍵字outinJava的泛型的比較學習

由Kotlin 中關鍵字out和in聯想到Java中的泛型 最近在學習kotlin語法,發現了kotlin中的關鍵字out和in,感覺甚是新穎,就細細琢磨了一下,發現這兩個關鍵字和Java中的泛型邊界有著千絲萬縷的聯絡。那麼接下來我們就先談談Java中的泛型,