Kotlin语法特征及特性

作者: 世外大帝 | 来源:发表于2017-09-01 09:11 被阅读37次

    特性

    • kotlin中一切皆为对象
    • 语句结尾不用分号
    • 匿名函数中花括号内前后都应该有空格
    • 没有基础数据类型,都用val或者var表示
    • 可以和java混编,无缝对接
    • 目前了解的就这几个

    变量和常量

    • var是变量,val是常量

    • val相当于用final修饰过,所以不允许修改

    • 可以声明类型(以下示例太明显了,所以idea会提示追加类型是多余的,毕竟工具对这么基础的还是知道的)

      val a = 0 
      val b = "Kotlin"
      val c = MyBean()
      
      val a: Int = 0
      var b: String = "Kotlin"
      var c: MyBean = MyBean()
      
      

    空校验

    //报错,提示“null不能是非空字符串的值”
    var s: String = null
    //允许为空
    var s: String? = null
    

    多行输入

    var str = """
                one
                two
                three
                """
    
    //相当于
    var str1 = "one"+"/n"+"two"+"/n"+"three"
    

    去空和边界符

    • |是默认的边界符
    • trimMargin()是去重
    • 可以支持自定义边界符
    • trimMargin(">")那么>就是边界符了
    val text = """
        |Tell me and I forget.
        |Teach me and I remember.
        |Involve me and I learn.
        |(Benjamin Franklin)
        """.trimMargin()
    

    其他

    其他好像也没啥可说的了,强调几个官方的吧

    基础数据类型

    类型 位数
    Double 64
    Float 32
    Long 64
    Int 32
    Short 16
    Byte 8

    常量

    不支持八进制,

    整型

    • Decimals: 123
    • long型: 123L
    • Hexadecimals十六进制: 0x0F
    • Binaries二进制: 0b00001011

    浮点型

    • Double(default): 123.5, 123.5e10
    • Float(f or F): 123.5f

    命名规则

    官方说,为了可读性,尽量多用下划线

    val oneMillion = 1_000_000
    val creditCardNumber = 1234_5678_9012_3456L
    val socialSecurityNumber = 999_99_9999L
    val hexBytes = 0xFF_EC_DE_5E
    val bytes = 0b11010010_01101001_10010100_10010010
    

    表达式

    在Java平台上,数字被物理地存储为JVM的基本类型,除非我们引用可空(例如Int ?)或泛型。在后一种情况下,数字是被装箱的。

    • number的装箱不一定要保存身份
    val a: Int = 10000
    print(a === a) // Prints 'true'
    //转换过后就不绝对等于了
    val boxedA: Int? = a
    val anotherBoxedA: Int? = a
    print(boxedA === anotherBoxedA) // !!!Prints 'false'!!!
    

    Note:只有 ===才是false。==还是ture

    显示转换

    较小的类型不会隐式地转换为更大的类型。所以需要显示转换

    val a: Int? = 1 // 一个装箱Int
    val b: Long? = a // 隐式转换产生一个装箱Long
    print(a == b) // 你可能得到一个false
    
    //还有这个也不行
    val b: Byte = 1 
    val i: Int = b // ERROR
    
    //这样就行了
    val b: Byte = 1
    val i: Int = b.toInt()//OK
    

    所以你需要下面的显示转换api

    toByte(): Byte
    toShort(): Short
    toInt(): Int
    toLong(): Long
    toFloat(): Float
    toDouble(): Double
    toChar(): Char
    

    循环

    idea快捷键还是和原来一样yourList.for

    //增强循环
    for (item in list)
        println(item)
    
    //普通循环
    for (i in args.indices)
        println(args[i])
    

    相关文章

      网友评论

        本文标题:Kotlin语法特征及特性

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