Kotlin 學習筆記以內置類型(1)

1、基本類型

1.一、與 Java 對比

<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

1.二、聲明變量

1.2.1:Kotlin 聲明變量

<font face= 黑體>Kotlin 聲明變量的具體形式以下所示:
聲明變量git

1.2.2:Kotlin 聲明變量與 Java 對比

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"

1.2.3:易混淆的 Long 類型標記

// 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

1.2.4:Kotlin 的數值類型轉換

<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

1.三、字符串模板 $

val j = "I❤️China"
println("Value of String 'j' is: $j")
println("Length of String 'j' is: ${j.length}")

1.四、字符串比較

<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.

1.五、Kotlin 基本類型小結

基本類型小結

2、數組

2.一、與 Java 對比

<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[]

2.二、數組的建立

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
}

2.三、數組的打印

<font face= 黑體>數組的打印能夠利用 contentToString() 方法。

val c0 = intArrayOf(1, 2, 3, 4, 5)
println(c0.contentToString())

<font face= 黑體>打印結果以下所示:
打印結果

2.四、數組的長度

Java:

int[] c = new int[]{1, 2, 3, 4, 5};
System.out.println(a.length);

Kotlin:

val a = IntArray(5)
println(a.size)

2.五、數組的讀寫

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]}")

2.六、數組的遍歷

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)
}

2.七、判斷元素是否在數組裏面

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'")
}

2.八、Kotlin 數組小結

數組小結

3、區間

<font face= 黑體>在 Java 中是沒有區間這個概念的,區間是 Kotlin 特有的。

3.一、區間的建立

閉區間:

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

3.二、區間的打印

<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())    // 打印出來的是描述

3.三、區間的遍歷

for (element in intRange) {
    println(element)
}
intRange.forEach {
    println(it)
}

3.四、區間的包含關係

if (12 !in intRange) {
    println("12 not in range 'intRange'")
}

3.五、區間的應用

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])
}

3.六、Kotlin 區間小結

區間小結

4、小結

<font face= 黑體>本篇博客主要講了 Kotlin 內置類型中的基本類型數組區間,下一節咱們講集合框架函數

5、源碼

源碼已上傳至 github,有須要能夠直接下載。

相關文章
相關標籤/搜索