美文网首页程序员
kotlin从入门到看开 ₂

kotlin从入门到看开 ₂

作者: 東方月初 | 来源:发表于2017-06-14 09:30 被阅读40次

    layout: post
    title: "kotlin-基础知识2"
    subtitle: "青春就是这样 好得像是无论怎样度过都会被浪费 那么 不如浪费在你身上"


    类和对象

    什么是对象?

    1. 是一个具体的概念
    2. 描述某一种类的具体个体
    3. 比如某些人 车 手里的书等等

    什么是类?

    1. 类是一个抽象的概念
    2. 具有某些特征事物的概括
    3. 不特定指代任何一个具体的事物

    类的继承

    1. 提取共性 抽象父类
    2. 子类拥有父类的一切特征
    3. 子类可以自定义自己的特征
    4. 所有的类都最终继承自Any
    class 类名 (构造方法) {
        init{//初始化代码块}
    }
    

    示例代码

    //在kotlin中继承 要主动打开open
    open class person(var name: String, var sex: String, var voice: String) {
        init {
            println("new a ${this.javaClass.simpleName}, name:$name, sex:$sex, voice:$voice")
        }
    }
    //继承 : 类名(参一,参二)
    class girl(name: String, sex: String, voice: String) : person(name, sex, voice) {}
    
    fun main(args: Array<String>) {
        val mygirl: girl = girl("涂山苏苏", "女狐妖", "甜美\":道士哥哥,这是给你的五彩棒~\"")
        println(mygirl is person)
    }
    
    

    打印结果

    new a girl, name:涂山苏苏, sex:女狐妖, voice:甜美":道士哥哥,这是给你的五彩棒~"
    true
    

    空类型

    任意类型都有可空和不可空两种

    val notNull : String = null //错误.不能为空
    val nullable : String? = null //正确 .?表示可以为空
    notNull.length //正确.不为空的值可以直接使用
    nullable.length //错误.可能为空,不能直接获取长度
    nullable!!.length //正确.!!表示强制认定(我知道它不为空的意思)
    nullable?.length //正确.若为空,返回空.不为空返回长度
    

    智能类型转换

    Java Style 类型转换

    //类似于Java Style 类型转换.失败则抛异常
    val student : Student = person as Student
    

    安全类型转换

    //如果转换失败.返回null.不抛异常
    val student : Student? = person as? Student
    

    智能类型转换

    //编译器尽可能的推导类型,避免无用的类型转换
    if(person is Student) person.<子类的成员>
    //因为nullable不为空.所以可以直接使用它的成员.不用强转
    if(nullable != null) nullable.length
    

    1. 就是命名空间
    2. 包的声明必须在非注释代码的第一行

    区间

    • 一个数学区间,表示范围
    • ClosedRange的子类,IntRange最常用
    • 基本写法
      • 0...100 表示[0,100]
      • 0 until 100 表示[1,100)不包含100
      • 10 in 1...100 表示判断10是否在[1,100]中
    val range: IntRange = 0..1024 // [0, 1024]
    val range_exclusive: IntRange = 0 until 1024 // [0, 1024) = [0, 1023]
    
    val emptyRange: IntRange = 0..-1
    
    fun main(args: Array<String>) {
        println(emptyRange.isEmpty())
        println(range.contains(50))
        println(50 in range)
    //for循环的写法
        for(i in range_exclusive){
            print("$i, ")
        }
    }
    

    数组

    数组即一些列的对象

    基本写法

    //String即元素类型 自己想放什么类型就可以放什么类型
    val array : Array<String> = ArrayOf("我", "是", "码农")
    

    示例代码

    val arrayOfInt: IntArray = intArrayOf(1, 3, 5, 7)
    val arrayOfChar: CharArray = charArrayOf('H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd')
    val arrayOfString: Array<String> = arrayOf("一", "个", "码农")
    val arrayOfInts: Array<Int> = arrayOf(1, 2, 3, 4)
    
    
    fun main(args: Array<String>) {
        println(arrayOfInt.size)
        for (int in arrayOfInt) {
            //输出第i个成员
            println(int)
        }
        println(arrayOfChar.joinToString(""))
    //数组切片1...2即取索引为1,2的元素
        println(arrayOfInt.slice(1..2))
    }
    

    打印结果

    4
    1
    3
    5
    7
    HelloWorld
    [3, 5]
    
    

    相关文章

      网友评论

        本文标题:kotlin从入门到看开 ₂

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