Kotlin学习笔记(一)—— Kotlin基础

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u014112893/article/details/100058013
数据类型

基本类型和Java基本保持一致,只是Kotlin中是大写首字母

Char
Byte 
Short 
Int 
Long 
Float 
Double 
Boolean

Kotlin不支持自动扩展数字范围,Java中int类型可自动扩展成long,但是Kotlin中必须要显式的指定类型。

val intValue = 10
val longValue = intValue.toLong()

其他类似的还有toDouble toShort toByte等方法

上面第一行代码中没有显示的指定数据类型,Kotlin可以根据指定的值推断出类型,由此可知上面的intValue的类型是Int。

元组

元组只有二元(Pair)和三元(Triple),因此也只能存放2个值和3个值

val pair = Pair("one", "two")
print(pair.first + " - " + pair.second)

val triple = Triple("one", "two", "third")
print(triple.first + " - " + triple.second + " - " + triple.third)
可空类型

Java中的最常见的一个异常就是NullPointerException,Kotlin的可空类型完美的避免了每次繁琐的判空处理。可空类型表示它的值可以声明为null,用类型后面加一个?表示,如:

val string: String? = null // ①
val string2: String = null // ②

上面①的声明是正确的,但是②的声明是错误的,IDE会提示 Null can not be a value of a non-null type String,说明没有带?的变量是不能声明为null的。

声明3个变量分别是 s1,s2,s3,将3个变量转换成大写

val s1: String = "Kotlin"
val s2: String? = null
val s3: String

println(s1.toUpperCase())
println(s2?.toUpperCase())
println(s3.toUpperCase()) // IDE报错Variable 's3' must be initialized

KOTLIN
null

声明s1并赋值为小写字符串kotlin,声明s2但是初始化为null,声明s3不初始化。

s1可将 kotlin 转成 KOTLIN;s2初始化为null,直接输出了null,而没有像Java那样报NPE异常;s3声明不报错,但是s3.toUpperCase()的时候IDE编译不通过。这说明:

  • 声明可以不立马初始化
  • String?是空类型安全的,即使是初始化为null,依旧不报错,而是返回null
  • 对于未初始化的变量不能使用
相等操作符

== 和 ===

判断引用是否相等用 ===

判断值是否相等用 ==

val s1 = "Kotlin"
val s2 = "Kotlin"
println(s1 == s2)
println(s1 === s2)

>> true
>> true

因为s1和s2的字符串在常量池中指向的是同一个引用,所以引用和值都返回true

val f1 = File("sdcard/")
val f2 = File("sdcard/")
println(f1 == f2)
println(f1 === f2)

>> true
>> false

f1和f2虽然是相同的路径,但是是不同的对象,所以指向了不同的引用,因此 === 返回false,路径值相同,因此 == 返回true。

区间

区间是一个有开始值和结束值的范围。创建一个区间用 … 操作符

val range = 1..100

range的范围等同于 1 <= range <= 100

遍历区间
for (num in range) {
    println(num)
}

>> 1
>> 2
...
>> 100
区间反转
val reversedRange = range.reversed()
for (num in reversedRange) {
    println(num)
}

>> 100
>> 99
...
>> 1
步长

默认的步长是1,也可以设置步长,用step(Int)

val range = 1..100
for (num in range.step(3)) {
	println(num)
}

>> 1
>> 4
...
>> 100

猜你喜欢

转载自blog.csdn.net/u014112893/article/details/100058013