美文网首页
Kotlin从0到1——变量、常量、字符串、数组

Kotlin从0到1——变量、常量、字符串、数组

作者: 我是我我也不是我 | 来源:发表于2017-07-30 17:18 被阅读0次

    Kotlin中一切都是对象。虽然有一部分类型是内置的——系统优化了它们的操作,但是它们看起来跟一般的类一样。下面我们通过常量、变量、字符串、数组的操作来了解一部分基础类型。

    1. 变量和常量

    1.1 常量的定义

    val关键字声明定义常量——只赋值一次的变量(只读变量)。

    val i:Int = 6   //即刻给变量 i 赋值
    

    以上代码中 val是 kotlin 中的关键字; i 是变量名; Int 是Kotlin中的Int类型的数字类型; 6 是数字字面常量; = 表示将 6 赋值给变量 i

    1.2 变量的定义

    var关键字声明定义变量

    var jj:Int = 66
    

    以上代码中 var是 kotlin 中的关键字; j 是变量名; Int 是Kotlin中的Int类型的数字类型; 66 是数字字面常量; = 表示将 66 赋值给变量 j

    1.3 其它示例代码

    val k:Int   // 声明变量 k ,冒号后面的 Int 必须加上(标明 k 的数据类型)
    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>比如:上文中的 62323l等都是字面量常量。它们都是数字,因此也称为数字字面量常量。

    1.5 数据类型

    以上代码中的 ByteIntLong,我们称为数据类型。查看部分Kotlin数据类型表。

    2. 字符串

    2.1 字符

    字符用 Char 类型表示。KotlinJava 不同,字符不能直接用数字表示。用法示例:

    val c:Char = '1'     // 数字字符
    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节</a>。以上代码中,字符串 "xyz" 就是字符串字面量,其它一些字面量常量举例:

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

    2.5 字符串模板

    字符串中支持 “模板表达式”,它以 $ 符号开始后面可以接一个变量(常量)名或者表达式。示例代码如下:

    val x = 7
    var s = "x = $x"   // $后接变量名,s 结果为 x = 7
    var s1 = "x+12=${x+12}"   // $后接表达式, s1 结果为 x+12=19
    

    3. 数组

    Kotlin 中数组用类 Array 表示。 它拥有 size属性 和 setget 等方法. 以下是Array.kt 文件部分内容:

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

    我们可以通过以下标准库方法创建一个数组:

    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
    

    以下是一些创建数组的示例代码:

    var arr = Array(3,{i->i+1})  //通过构造函数创建数组Array<int>
    var arr1 = arrayOf(1,"2sd","33",56)  // 通过标准库创建数组Array<Any>
    // 通过标准库创建元素可为空,初始大小为16的数组 Array<Int?>, arr2后必须指定数组元素类型
    var arr2:Array<Int?> = arrayOfNulls(16)  
    //以下代码将无法编译通过
    var arrTmp = arrayOfNulls(16)
    var arrInt = intArrayOf(2,4,5)
    

    数组内容访问和修改示例代码:

    var arr3 = arrayOf(1,"df","2334",89)
    var itemInteger = arr3[0]   // 通过下标访问数组第一个元素
    arr3[2]  = 8  // 通过下标修改数组第三个元素
    var getInteger = arr3.get(3)   //通过数组方法访问第4个元素
    arr3.set(1,66)   //通过数组方法修改第二个元素
    for (item in arr3) {  // 数组遍历
        print(item)
        print("\t")
        println(item.javaClass)
    }
    

    相关文章

      网友评论

          本文标题:Kotlin从0到1——变量、常量、字符串、数组

          本文链接:https://www.haomeiwen.com/subject/jspacxtx.html