Kotlin從0到1——變量、常量、字符串、數(shù)組

Kotlin中一切都是對象。雖然有一部分類型是內(nèi)置的——系統(tǒng)優(yōu)化了它們的操作,但是它們看起來跟一般的類一樣。下面我們通過常量、變量、字符串、數(shù)組的操作來了解一部分基礎類型。

1. 變量和常量

1.1 常量的定義

val關鍵字聲明定義常量——只賦值一次的變量(只讀變量)。

val i:Int = 6   //即刻給變量 i 賦值

以上代碼中 val是 kotlin 中的關鍵字; i 是變量名; Int 是Kotlin中的Int類型的數(shù)字類型; 6 是數(shù)字字面常量; = 表示將 6 賦值給變量 i

1.2 變量的定義

var關鍵字聲明定義變量

var jj:Int = 66

以上代碼中 var是 kotlin 中的關鍵字; j 是變量名; Int 是Kotlin中的Int類型的數(shù)字類型; 66 是數(shù)字字面常量; = 表示將 66 賦值給變量 j。

1.3 其它示例代碼

val k:Int   // 聲明變量 k ,冒號后面的 Int 必須加上(標明 k 的數(shù)據(jù)類型)
val m = 666 // 立刻賦值,自動類型推斷,m為Int默認類型

val j:Long    // 變量聲明
j = 23         // 延遲初始化

val p:Int?  // 申明一個取值可以為 null的變量 p
p = 23
val q:Long? = p  // 類型不匹配,不能賦值 , 提示錯誤

var a:Int = 6   // 定義變量,并賦值
a+=12           // 將變量取值與 12 相加,然后賦值給變量a

1.4 字面量常量

<a name="literal_definition">字面量用于表示 源代碼 中一個固定值的表示法。</a>比如:上文中的 6,23,23l等都是字面量常量。它們都是數(shù)字,因此也稱為數(shù)字字面量常量。

1.5 數(shù)據(jù)類型

以上代碼中的 Byte,Int,Long,我們稱為數(shù)據(jù)類型。查看部分Kotlin數(shù)據(jù)類型表。

2. 字符串

2.1 字符

字符用 Char 類型表示。KotlinJava 不同,字符不能直接用數(shù)字表示。用法示例:

val c:Char = '1'     // 數(shù)字字符
var c1 = 'a'         // 字母字符
var c2 = '\n'        // 特殊字符
var c3 = '愛'        // Kotlin采用unicode編碼,支持中文字符

錯誤用法示例:

var c:Char = 'a'
if(c == 92){   // 提示編譯錯誤 , == 兩邊類型不匹配
}

Kotlin中部分特殊字符舉例: \",\',\n,\t\b,\r,\$,\\\\。

2.2 字符串的定義

String表示字符串類型,它是不可變的。如:

var str:String  // 聲明 str 是一個字符串
str = "xyz"      // 延遲賦值,將字符串 "xyz" 賦值給變量str
val constStr: String = str  // 字符串常量
var str2:String? = null    // 將 null 賦值給 str2 , str 不能賦值為null

2.3 多行字符串

Kotlin中用三引號 """ """ 表明這是一個多行字符串,以下是示例代碼:

var mulLine:String = """   // 多行字符串示意代碼
    this
    is
    multiline
    string
    literal.
    """

2.4 字符串字面量

字面量的定義參見<a href="#literal_definition">1.4節(jié)</a>。以上代碼中,字符串 "xyz" 就是字符串字面量,其它一些字面量常量舉例:

println("Hello world , printed by kotlin .")
print("\n") 
// 多行字符串字面量
"""
multiline
string
literal .
""" 

2.5 字符串模板

字符串中支持 “模板表達式”,它以 $ 符號開始后面可以接一個變量(常量)名或者表達式。示例代碼如下:

val x = 7
var s = "x = $x"   // $后接變量名,s 結(jié)果為 x = 7
var s1 = "x+12=${x+12}"   // $后接表達式, s1 結(jié)果為 x+12=19

3. 數(shù)組

Kotlin 中數(shù)組用類 Array 表示。 它擁有 size屬性 和 set ,get 等方法. 以下是Array.kt 文件部分內(nèi)容:

package kotlin
/**
 * Represents an array (specifically, a Java array when targeting the JVM platform).
 * Array instances can be created using the [arrayOf], [arrayOfNulls] and [emptyArray]
 * standard library functions.
 */
public class Array<T> {
    public inline constructor(size: Int, init: (Int) -> T)
    public operator fun get(index: Int): T
    public operator fun set(index: Int, value: T): Unit
    public val size: Int
    public operator fun iterator(): Iterator<T>
}

我們可以通過以下標準庫方法創(chuàng)建一個數(shù)組:

public fun <reified @PureReifiable T> arrayOfNulls(size: Int): Array<T?>
public inline fun <reified @PureReifiable T> arrayOf(vararg elements: T): Array<T>
public fun doubleArrayOf(vararg elements: Double): DoubleArray
public fun floatArrayOf(vararg elements: Float): FloatArray
public fun longArrayOf(vararg elements: Long): LongArray
public fun intArrayOf(vararg elements: Int): IntArray
public fun charArrayOf(vararg elements: Char): CharArray
public fun shortArrayOf(vararg elements: Short): ShortArray
public fun byteArrayOf(vararg elements: Byte): ByteArray
public fun booleanArrayOf(vararg elements: Boolean): BooleanArray
@SinceKotlin("1.1")
public inline fun <reified T : Enum<T>> enumValues(): Array<T>
@SinceKotlin("1.1")
public inline fun <reified T : Enum<T>> enumValueOf(name: String): T

以下是一些創(chuàng)建數(shù)組的示例代碼:

var arr = Array(3,{i->i+1})  //通過構造函數(shù)創(chuàng)建數(shù)組Array<int>
var arr1 = arrayOf(1,"2sd","33",56)  // 通過標準庫創(chuàng)建數(shù)組Array<Any>
// 通過標準庫創(chuàng)建元素可為空,初始大小為16的數(shù)組 Array<Int?>, arr2后必須指定數(shù)組元素類型
var arr2:Array<Int?> = arrayOfNulls(16)  
//以下代碼將無法編譯通過
var arrTmp = arrayOfNulls(16)
var arrInt = intArrayOf(2,4,5)

數(shù)組內(nèi)容訪問和修改示例代碼:

var arr3 = arrayOf(1,"df","2334",89)
var itemInteger = arr3[0]   // 通過下標訪問數(shù)組第一個元素
arr3[2]  = 8  // 通過下標修改數(shù)組第三個元素
var getInteger = arr3.get(3)   //通過數(shù)組方法訪問第4個元素
arr3.set(1,66)   //通過數(shù)組方法修改第二個元素
for (item in arr3) {  // 數(shù)組遍歷
    print(item)
    print("\t")
    println(item.javaClass)
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容