前言
- 你还在把Java当成Android官方开发语言吗?Kotlin了解一下!
- 2017年Google IO大会宣布使用Kotlin作为Android的官方开发语言,相比较与典型的面相对象的JAVA语言,Kotlin作为一种新式的函数式编程语言,也有人称之为Android平台的Swift语言。
环境以及工具
Android Studio 3.3
数字
Kotlin 处理数字在某种程度上接近 Java,但是并不完全相同。例如,对于数字没有隐式拓宽转换(如 Java 中 int 可以隐式转换为long——译者注)
Kotlin 提供了如下的内置类型来表示数字(与 Java 很相近):
类型 | 字节大小 |
---|---|
Double | 8 |
Float | 4 |
Long | 8 |
Int | 4 |
Short | 2 |
Byte | 1 |
- 比较两个数
//-----------------------比较两个数-------------------------------------
//三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小
val a: Int = 128
println(a === a)//输出结果-------------------------true-------------------------
val b: Int? = a
val c: Int? = a
println(b == c)//输出结果-------------------------true-------------------------
//如果 a<128 false, a>=128 true 长话短说,JVM把[-128,127]的所有int数字全部缓存了,
// 任何指向这个范围的对象,都不可能被另外"创建",又何谈“装箱”
println(b === c)//输出结果-------------------------false-------------------------
- 显式转换
//-----------------------显式转换-------------------------------------
//较小类型并不是较大类型的子类型,我们可以显式转换来拓宽数字类型
val x: Byte = 1
//val y: Int = b // 转化错误
val y: Int = x.toInt()
println(y)//输出结果-------------------------1-------------------------
- 自动类型转化
//-----------------------自动类型转化-------------------------------------
val temp = 10L + 3 // Long + Int => Long
println(temp)//输出结果-------------------------13-------------------------
- 运算
//-----------------------位操作符-------------------------------------
//左移
val shlShow = 1.shl(2)
println(shlShow)//输出结果-------------------------4-------------------------
//右移
val shrShow = 4.shr(2)
println(shrShow)//输出结果-------------------------1-------------------------)
字符
字符用 Char 类型表示。它们不能直接当作数字
//-----------------------字符-------------------------------------
//字符用 Char 类型表示。它们不能直接当作数字,字符字面值用单引号括起来: '1'
val ch: Char = 'a'
println(ch)//输出结果-------------------------a-------------------------
val chToInt: Int = ch.toInt()
println(chToInt)//输出结果-------------------------97-------------------------
布尔
//-----------------------布尔-------------------------------------
val bl: Boolean = false
println(bl)//输出结果-------------------------false-------------------------
数组
//-----------------------数组-------------------------------------
val arrs = arrayOf(1, 2, 3, 0, 6)
for (arr in arrs) {
print("$arr,")//输出结果-------------------------1,2,3,0,6,-------------------------
}
println()
val arrs2 = Array(3) { i -> (i * 2) }
for (arr in arrs2) {
print("$arr,")//输出结果-------------------------0,2,4,-------------------------
}
println()
val z: IntArray = intArrayOf(1, 2, 3)
z[0] = z[1] + z[2]
println(z[0])//输出结果-------------------------5-------------------------
字符串
//-----------------------字符串-------------------------------------
val strs: String = "12306"
for (s in strs) {
print("$s,")//输出结果-------------------------1,2,3,0,6,-------------------------
}
println()
- 字符串字面值
Kotlin 有两种类型的字符串字面值: 转义字符串可以有转义字符,以及原始字符串可以包含换行以及任意文本。转义字符串很像 Java 字符串:
//转义字符串可以有转义字符
val ss = "Hello, world!\n"
println(ss)//输出结果-------------------------Hello, world!\n-------------------------
val sss = "Hello, world2!"
println(sss)//输出结果-------------------------Hello, world2!-------------------------
输出结果
Hello, world!
Hello, world2!
- 原始字符串
//原始字符串 使用三个引号(""")分界符括起来,
//内部没有转义并且可以包含换行以及任何其他字符
//默认 | 用作边界前缀
println("原始字符串star")
val text1 = """
for (c in "foo")
print(c)
"""
println(text1)
println("原始字符串end")
var text = """
|666
|777
|999
""".trimMargin()//前置空格删除
println(text)
println(text.length)
输出结果
原始字符串star
for (c in "foo")
print(c)
原始字符串end
666
777
999
11
字符串模板
//-----------------------字符串模板-------------------------------------
val i = 12306
val s = "i = $i"
println(s)//输出结果-------------------------i = 12306-------------------------
val s2 = "I am boyi.chen"
val str = "$s2.length is ${s2.length}"
println(str)//输出结果-------------------------I am boyi.chen.length is 14-------------------------
val price = "$9.99"
println(price)//输出结果-------------------------$9.99-------------------------
源码
请关注公众号并在后台回复:kotlin
Kotlin重构系列分享教程
Kotlin环境搭建
Kotlin重构初体验之告别FindViewById
Kotlin重构如何兼容原先的ButterKnife、EventBus3.1
当ButterKnife8.8.1碰到AndroidX怎么办
Kotlin教程Githup开源项目
Python爬虫系列分享教程
Python爬虫之旅之Selenium库的使用
Python爬虫之旅之豆瓣音乐