layout: post
title: "kotlin-基础知识2"
subtitle: "青春就是这样 好得像是无论怎样度过都会被浪费 那么 不如浪费在你身上"
类和对象
什么是对象?
- 是一个具体的概念
- 描述某一种类的具体个体
- 比如某些人 车 手里的书等等
什么是类?
- 类是一个抽象的概念
- 具有某些特征事物的概括
- 不特定指代任何一个具体的事物
类的继承
- 提取共性 抽象父类
- 子类拥有父类的一切特征
- 子类可以自定义自己的特征
- 所有的类都最终继承自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
包
- 就是命名空间
- 包的声明必须在非注释代码的第一行
区间
- 一个数学区间,表示范围
- 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]