kotlin从入门到看开 ₂


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]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容