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中無法使用continue和break;
// 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中常用DML和UDF和連線介面使用
一、分割槽表的介紹及使用 -》需求:統計每一天的PV,UV,每一天分析前一天的資料 -》第一種情況:每天的日誌儲存在同一個目錄中 &nbs
javaScrit中delete操作符的用法
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
python中Fraction()方法的用法介紹
小編是想將字串的分數,轉換為浮點型的小數才接觸到這個方法的。 原始碼如下: 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 中關鍵字out和in和Java中的泛型的比較學習
由Kotlin 中關鍵字out和in聯想到Java中的泛型 最近在學習kotlin語法,發現了kotlin中的關鍵字out和in,感覺甚是新穎,就細細琢磨了一下,發現這兩個關鍵字和Java中的泛型邊界有著千絲萬縷的聯絡。那麼接下來我們就先談談Java中的泛型,