<font face= 黑體>咱們來看一下 Kotlin 的基本類型與 Java 的區別,具體以下表所示:java
Kotlin | Java | |
---|---|---|
字節 | Byte | byte/Byte |
整型 | Int & Long | int/Integer & long/Long |
浮點型 | Float & Double | float/Float & double/Double |
字符 | Char | char/Character |
字符串 | String | String |
<font face= 黑體>Kotlin 聲明變量的具體形式以下所示:git
int a = 2; final String b = "Hello Java";
var a: Int = 2 val b: String = "Hello Kotlin"
<font face= 黑體>編譯器是能夠類型推導的,因此上述 Koltin 代碼也能夠簡化成如下這樣:github
var a = 2 val b = "Hello Kotlin"
// Java long a = 12345678910l; // 小寫l ok but not good long b = 12345678910L; // 大寫L ok // Kotin val a = 12345678910l; // 小寫l compile error(編譯報錯) val b = 12345678910L; // 大寫L ok
<font face= 黑體>在 Java 中是支持隱式轉換的,可是在 Kotlin 中隱式轉換是不被容許的。數組
int e = 10; long f = e; // 隱式轉換
<font face= 黑體>Kotlin 中這樣寫是錯誤的,以下:框架
val e: Int = 10 val f: Long = e // 是錯誤的
<font face= 黑體>Kotlin 中正確的寫法以下:函數
val e: Int = 10 val f: Long = e.toLong() // ok
val j = "I❤️China" println("Value of String 'j' is: $j") println("Length of String 'j' is: ${j.length}")
<font face= 黑體>在 Java 中 == 比較的是引用而不是內容,equals() 纔是比較內容的。可是在 Kotlin 中 == 比較的是內容,=== 比較的是引用。spa
val k = "Today is a sunny day." val m = String("Today is a sunny day.".toCharArray()) println(k === m) // compare references. println(k == m) // compare values.
<font face= 黑體>咱們來看一下 Kotlin 的數組與 Java 的區別,具體以下表所示:(相似的還有 Float、Double ...)3d
Kotlin | Java | |
---|---|---|
整型 | IntArray | int[] |
整型裝箱 | Array<Int<Int>> | Integer[] |
字符 | CharArray | char[] |
字符裝箱 | Array<Char<Int>> | Character[] |
字符串 | Array<<String<Int>>> | String[] |
Java:code
int[] c = new int[]{1, 2, 3, 4, 5};
Kotlin:blog
val c0 = intArrayOf(1, 2, 3, 4, 5) val c1 = IntArray(5) { it + 1 }
<font face= 黑體>數組的打印能夠利用 contentToString() 方法。
val c0 = intArrayOf(1, 2, 3, 4, 5) println(c0.contentToString())
<font face= 黑體>打印結果以下所示:
Java:
int[] c = new int[]{1, 2, 3, 4, 5}; System.out.println(a.length);
Kotlin:
val a = IntArray(5) println(a.size)
Java:
String[] d = new String[]{"Hello", "World"}; d[1] = "Java"; System.out.println(d[0] + ", " + d[1]);
Kotlin:
val d = arrayOf("Hello", "World") d[1] = "Kotlin" println("${d[0]}, ${d[1]}")
Java:
float[] e = new float[]{1, 3, 5, 7}; for (float element : e) { System.out.println(element); }
Kotlin:
val e = floatArrayOf(1f, 3f, 5f, 7f) for (element in e) { println(element) }
val e = floatArrayOf(1f, 3f, 5f, 7f) e.forEach { element -> println(element) }
e.forEach { println(it) }
Java:
for (float element : e) { if(element == 1f){ System.out.println("1f exists in variable 'e'");![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20210103151810961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODQ3ODc4MA==,size_16,color_FFFFFF,t_70#pic_center) break; } }
Kotlin:
if (1f in e) { println("1f exists in variable 'e'") }
<font face= 黑體>在 Java 中是沒有區間這個概念的,區間是 Kotlin 特有的。
閉區間:
val intRange = 1..10 // [1, 10] val charRange = 'a'..'z' val longRange = 1L..100L
開區間:(左閉右開)
val intRangeExclusive = 1 until 10 // [1, 10) val charRangeExclusive = 'a' until 'z' val longRangeExclusive = 1L until 100L
倒序閉區間:
val intRangeReverse = 10 downTo 1 // [10, 9, ... , 1] val charRangeReverse = 'z' downTo 'a' val longRangeReverse = 100L downTo 1L
步長區間:
val intRangeWithStep = 1..10 step 2 val charRangeWithStep = 'a'..'z' step 2 val longRangeWithStep = 1L..100L step 5
<font face= 黑體>對於可數的區間如整型區間能夠用 joinToString() 方法來打印,可是對於不可數的區間如浮點型區間是沒法打印的。
val intRange = 1..10 // [1, 10] val floatRange = 1f .. 2f // [1, 1.1225251564165, 1.7,2 ] 不可數的 println(intRange.joinToString()) // 能夠打印出具體的值 println(floatRange.toString()) // 打印出來的是描述
for (element in intRange) { println(element) }
intRange.forEach { println(it) }
if (12 !in intRange) { println("12 not in range 'intRange'") }
val array = intArrayOf(1, 3, 5, 7) for (i in 0 until array.size) { println(array[i]) } // 這個遍歷方法等同於上面的 for(i in array.indices){ println(array[i]) }
<font face= 黑體>本篇博客主要講了 Kotlin 內置類型中的基本類型、數組和區間,下一節咱們講集合框架、函數。
源碼已上傳至 github,有須要能夠直接下載。