Kotlin 基礎 - 數據類型

一、Boolean 類型

Boolean 值有兩個值,分別為 true 或 false。多數情況下,Kotlin 中的 Boolean 相當于 Java 中的基本類型 boolean,只有在必要的情況下才會裝箱成為 Java 中的裝箱類型 Boolean。這一切都是交由編譯器來完成,我們無需關心。

var isFirst: Boolean = true
var isSecond: Boolean = false

二、Number 類型
Kotlin 基礎 - 數據類型

var aLong: Long = 123L
var aInt: Int = 1234567890
var aShort: Short = 12345var aFloat: Float = 23F
var aDouble: Double = 23.0var aByte: Byte = 127

基本類型的裝箱與拆箱
Kotlin 不再區分裝箱與非裝箱類型,在需要的時候編譯器會幫我們自動的選擇是使用基本類型還是裝箱類型。

三、Chat 類型
Chat 類型表示一個字符,一個字符可以是一個字,或者一個符號等等。
字符占兩個字節,表示一個 16 位的 Unicode 字符。
字符使用單引號 '' 引起來,例如 '中','A','\n'。
Kotlin 基礎 - 數據類型

四、數值類型的顯式轉換
在 Java 里面,將一個 int 值賦給 long 值,是可以允許的,因為 Int 的范圍比 long 要小,所以 long 可以兼容 int。但是,在 Kotlin 中這樣的隱式轉換是不被支持的

var aInt: Int = 10
var    aLong: Long = 10000// 編譯器會報錯
aLong = aInt// 必須調用 toXXX 方法顯示轉換
aLong = aInt.toLong()

每個數值類型都支持下面的轉換

    1. toLong:Long
    1. toInt:Int
    1. toShort:Short
    1. toFloat:Float
    1. toDouble:Double
    1. toByte:BytetoChar: Char
    1. toString: String

五、字符串類型
字符串本質上可以說是"一串" Char,字符串使用雙引號 "" 引起來5.1 字符串的比較

var aName: String = "fancyluo"
var bName: String = "fancyluo"println(aName == bName) // true
println(aName === bName)// false

熟悉 Java 的同學對以上結果是不是就困惑了,怎么 == 打印出來了 true,這里我們可以看看== 的源碼就可以解開疑惑了。

public open operator fun equals(other: Any?): Boolean

Kotlin 的 == 就相當于 Java 的 equeals,表示比較內容。
Kotlin 的 === 就相當于 Java 的 ==,表示比較對象是否相同。

5.2 字符串模板

在 Kotlin 中,字符串可以包含模板表達式,模板表達式由 $ 開頭,如果需要進行表達式運算,可以寫在 {} 里面

var a: Int = 1
var b: Int = 2// Java
println("" + a + " + " + b + " = " + (a + b))// 字符串模板
println("$a + $b = ${a + b}")// print: 1 + 2 = 3// 原始字符串
var rawString = """ab${a + b}
"""

六、數組
Kotlin 中的數組由 Array 類表示,表示以一系列的對象,可以使用函數 arrayOf 來創建數組,示例如下

val arrayOfString: Array<String> = arrayOf("fancy", "luo")
val arrayOfUser: Array<UserInfo> = arrayOf(UserInfo("fancyluo", "音樂"),UserInfo("jack", "籃球"))

可以看到,我們使用 val 來修飾數組,在 Kotlin 中,數組是不可變的。上面數組里我們放的都是對象,那么基本類型的數組呢?Kotlin 中為了防止裝箱拆箱的操作,為每個基本類型都專門定制了相應的數組類型,從而避免過度裝箱的消耗。例如:IntArray,CharArray 等等

val arrayOfInt: IntArray = intArrayOf(1, 2, 3)
val arrayOfChar: CharArray = charArrayOf('中', '國')

七、區間
區間是一個數學上的概念,表示范圍。Kotlin 中區間是 ClosedRange 接口的子類,一般比較常用的是 IntRange。

// 閉區間 [0,1024]
var range: IntRange = 0..1024
// 半開區間 [0,1024) = [0,1023]
var untilRange = 0 until 1024fun main(args: Array<String>) {// 判斷是否在區間中print(666 in range))// 區間迭代for (i in range) {print("$i, ")}
}

八、空類型安全

fun getName(): String{return null
}

上面的代碼在編譯器里是會報錯的,普通情況下,Kotlin 中是不允許返回 null 類型的,這也就表明,我們在取這個值的時候,無需擔心,直接使用即可。那我們就是想返回 null 呢? 在返回值后面加個 ? 即可。

fun getName(): String?{return null
}

但是,返回了空類型之后,要使用這個函數就不是這么簡單了,如果你并不確定此函數返回的是否為空,那么你需要在函數后面加上一個?,如果你確定的知道此函數不會返回空,那么你可以在函數后面加上 !! 表示我明確知道返回值不為空,可放心使用。

// 此行代碼會報錯
var nameLength = getName().length// 不確定是否為空
var nameLength = getName()?.length// 確定不為空
var nameLength = getName()!!.length// getName 不為空則返回值,為空則不再執行后面的邏輯
var nameLength = getName() ?: return

轉載于:https://blog.51cto.com/13983283/2363036

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279914.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全框眼鏡拆卸鏡片方法分享

全框眼鏡拆卸鏡片方法分享http://www.iqiyi.com/w_19ru97p1n9.html 很多直接用手掰就成&#xff08;眼鏡布&#xff09; 轉載于:https://www.cnblogs.com/OceanF/p/9288411.html

發送http請求

public static String httpGetSend(String url) {String responseMsg "";HttpClient httpClient new HttpClient();GetMethod getMethod new GetMethod(url);// GET請求try {// http超時5秒httpClient.getHttpConnectionManager().getParams().setConnectionTimeo…

微軟公布Entity Framework 8.0規劃

微軟.NET團隊在博客上公布了有關 Entity Framework Core 8.0&#xff08;也稱為 EF Core 8 或 EF8&#xff09;的未來規劃。EF Core 8 是 EF Core 7 之后的下一個版本&#xff0c;這將是一個長期支持版本&#xff1b;計劃于 2023 年 11 月與 .NET 8 同時發布。該公司表示&#…

roku能不能安裝軟件_如何阻止假期更改Roku主題

roku能不能安裝軟件Wondering why your Roku looks…different? Roku occasionally changes the background for its millions of users, something they call a “featured theme.” 想知道為什么您的Roku看起來...不同嗎&#xff1f; Roku偶爾會改變其數百萬用戶的背景&…

助力AIoT,雅觀科技發布空間智能化操作系統

雷鋒網(公眾號&#xff1a;雷鋒網)消息&#xff0c;3月14日&#xff0c;雅觀科技在上海舉辦了“「AI」悟及物 「柔」生萬屋”2019雅觀科技新品發布會&#xff0c;發布了空間智能化操作系統Akeeta、空間智能化柔性服務技術中臺Matrix&#xff0c;以及基于兩者開發的雅觀智慧社區…

HTTP與HTTPS區別(詳細)

轉&#xff1a;http://blog.sina.com.cn/s/blog_6eb3177a0102x66r.html 1、減少http請求&#xff08;合并文件、合并圖片&#xff09;2、優化圖片文件&#xff0c;減小其尺寸&#xff0c;特別是縮略圖&#xff0c;一定要按尺寸生成縮略圖然后調用&#xff0c;不要在網頁中用res…

Ajenti-Linux控制面板之自動化運維工具

ajenti http://ajenti.org/ https://github.com/ajenti/ajenti 源碼 http://docs.ajenti.org/en/latest/ http://docs.ajenti.org/en/latest/man/install.html# 安裝部署Fast remote access for every occasion Install once and never google for PuTTY downloads again. An…

MongoDB C# Driver 快速入門

MongoDB的官方C#驅動可以通過這個鏈接得到。鏈接提供了.msi和.zip兩種方式獲取驅動dll文件。C#驅動的基本數據庫連接&#xff0c;增刪改查操作。在使用C#驅動的時候&#xff0c;要在工程中添加"MongoDB.Bson.dll"和"MongoDB.Driver.dll"的引用。同時要在代…

如何在Windows 10的地圖應用程序中獲取離線地圖

If you know you’re going to be using your PC in a location without an Internet connection, and you need access to maps, you can download maps for specific areas in the “Maps” app in Windows 10 and use them offline. 如果您知道要在沒有Internet連接的地方使…

Hive初識(二)

Hive分區Hive組織表到分區。它是將一個表到基于分區列&#xff0c;如日期&#xff0c;城市和部門的值相關方式。使用分區&#xff0c;很容易對數據進行部分查詢。表或分區是細分成桶&#xff0c;以提供額外的結構&#xff0c;可以使用更高效的查詢的數據。桶的工作是基于表的一…

網站計數器 web映射

站點的網站計數器的操作 <% page import"java.math.BigInteger" %> <% page import"java.io.File" %> <% page import"java.util.Scanner" %> <% page import"java.io.FileInputStream" %> <% page import…

XenApp_XenDesktop_7.6實戰篇之八:申請及導入許可證

1. 申請許可證 Citrix XenApp_XenDesktop7.6和XenServer 6.5申請許可證的步驟是一致的&#xff0c;由于之前我已經申請過XenApp_XenDesktop的許可證&#xff0c;本次以XenServer6.5的許可證申請為例。 1.1 在申請試用或購買Citrix產品時&#xff0c;收到相應的郵件&#xff0…

Windows 11的記事本將獲得類似瀏覽器的標簽功能

Windows 11已經向全世界的客戶推出&#xff0c;自從它問世以來已經收到各種有趣的更新。例如&#xff0c;Windows 11的22H2版本&#xff08;操作系統的第一個大更新&#xff09;為文件資源管理器添加了標簽&#xff0c;啟用了任務欄的拖放支持&#xff0c;以及更多。Windows-11…

C#種將String類型轉換成int型

API&#xff1a; 有一點是需要注意的&#xff0c;那就是必須保證該String類型內全為數字&#xff0c;能確保轉換正確&#xff1b; 1.int.Parse(str);2.TryParse(str, out intA);3. Convert.ToInt32(str);以上都可以&#xff0c;其中 1和3 需要try&#xff5b;&#xff5d;異常&…

【本人禿頂程序員】技巧分享丨spring的RestTemplate的妙用,你知道嗎?

←←←←←←←←←←←← 快&#xff01;點關注 為什么要使用RestTemplate&#xff1f; 隨著微服務的廣泛使用&#xff0c;在實際的開發中&#xff0c;客戶端代碼中調用RESTful接口也越來越常見。在系統的遺留代碼中&#xff0c;你可能會看見有一些代碼是使用HttpURLConnectio…

譯?:Top Three Use Cases for Dapr and Kubernetes

有關譯者&#xff1a;陳東海(seachen)&#xff0c;?前就職于騰訊&#xff0c;同時在社區也是?名Dapr Member.導語&#xff1a;在SDLC(Software Development Lifecycle軟件開發?命周期中)&#xff0c;絕?多數CNCF項?都是專注于軟件開發的中后期階段&#xff0c;特別是運維和…

MySQL數據庫的datetime與timestamp

MySQL數據庫中有datetime與timestamp兩種日期時間型數據類型&#xff0c;其中timestamp可以用timestamp(n)來表示年月日時分秒的取值精度&#xff0c;如果n14則完整匹配于datetime的精度&#xff0c;那為什么還需要datetime這種類型呢&#xff1f;我做過試驗&#xff0c;timest…

平視相機svo開源項目_什么是平視顯示器(HUD),我應該得到一個嗎?

平視相機svo開源項目In a world full of augmented reality snowboard goggles and Google Glass, it seems only fair that our cars get to enjoy some of the same treatment. Heads-up displays, or “HUDs” as they’re better known, are a new type of add-on for cons…

yum 下載RPM包而不進行安裝

yum命令本身就可以用來下載一個RPM包&#xff0c;標準的yum命令提供了--downloadonly(只下載)的選項來達到這個目的。 $ sudo yum install --downloadonly <package-name> 默認情況下&#xff0c;一個下載的RPM包會保存在下面的目錄中: /var/cache/yum/x86_64/[centos/fe…

react項目打包后路徑找不到,項目打開后頁面空白的問題

使用 npm install -g create-react-app快速生成項目腳手架打包后出現資源找不到的路徑問題&#xff1a; 解決辦法&#xff1a;在package.json設置homepage 轉載于:https://www.cnblogs.com/lan-cheng/p/10541606.html