Kotlin一: 初识,基础类型注意事项归纳
2020-02-07 本文已影响0人
大川的川
你瞅啥?
Kotlin的显著优势如下:
-
简洁性:这是我们选择使用的Kotlin的最大动力。Kotlin具有大量现代编程语言的简洁性和便捷性,因此Kotlin被誉为Android平台的Swift。
-
兼容性:Kotlin完全兼容Java,因此Kotlin即是一门新的语言,也不是一门“全新”的语言,Kotlin可以自由使用Java领域的无数框架和库。因此,开发者即可保持熟悉的技术栈,又可获得现代编程语言的优势。
-
迁移性:Kotlin支持大型项目从Java向Kotlin逐步迁移-----项目主体部分继续使用Java,新开发的功能可使用Kotlin编写,也可逐步使用Kotlin代替部分老旧的Java代码。
注意事项:
-
声明变量:var|val 变量名 [:类型] [=初始值]
1. 赋值类型与变量类型要相符
2. val声明的变量是不可变变量,不能重新赋值
var b : Int
var name="CCTV"
b = 20
name = "BTV"
name = 12 // 此处是错误的,错误类型的赋值
var age : Int = 30
age = 18
//特别注意以下val声明的变量,不能重新赋值
val book ="疯狂Kotlin讲义"
book ="a" //使用val声明的变量是不可变变量,不能重新赋值
-
使用val声明的不可变变量其实相当于我们熟知的常量,Kotlin的常量分为两种:
1. 局部范围的常量:这种常量允许在声明时不指定初始值,在第一次使用之前赋值即可。
2. 类的常量属性:这种常量属性既可以在声明时指定初始值,也可以在类或结构体的构造器中指定初始值 - Kotlin是null安全的语言,因此Byte、Short、Int、Long变量都不接受null值,如果存储null值,则使用“?” 如下示例:
var notNull : Int =null // 不支持null值,错误代码
var nullable : Int? =null // Int?相当于支持null值的Int型,正确代码
-
整数类型添加“?”后缀和不加后缀有什么区别?
1.不加后缀“?”将会映射成Java的int基本类型,但Int?类型则会自动映射成Java的Integer类型
2.如果将Int?的值设置在“-128~127”之间的整数,那么两值也是相等的,大于这个区间,则不相等
var int1 : Int = 100
var int2 : Int = 100
printlin(int1 === int2) // 基本类型比较,输出true
var int3 : Int? = 200
var int4 : Int? = 200
printlin(int3 === int4) // 引用类型比较,输出false
var int5 : Int? = 100
var int6 : Int? = 100
printlin(int5 === int6) // Int?值设置在“-128~127”之间的整数,引用类型比较,输出true
-
数据类型间的转换
1. 转换运算的结果会自动提升到参与运算过程中的类型最高等级。低>高:Byte<Short<Int<Long<Float<Double
2. 如果表达式中包含字符串,+号是连接运算符,如果+号前后是Char型值字符和数字,会得到‘a’后面的第几位数字的字符
// -------基本类型转换
var b : Byte = 40
var c : Short = 97
var i : Int = 23
var d : Double = .315
// Double是最高类型等级,则result也将会是Double类型
val result = b + c + i * d;
println (result )
// -------字符串类型转换
// 输出Hello!a7
println ("Hello!"+'a'+7 )
// 输出hHello! 此处对Char型做加法运算,得到'a'后面的第7个字符'h'。
println ('a'+7+"Hello!" )
var b : String? ="dsfs"
println(b?.length) // 输出4
b=null
println(b?.length) // 输出null
// 与let函数结合使用,当b不为null时才调用let函数,相当于判断是否为空
b?.let{
println(it)
}
var b : String? = null
var len = b?.length ?: -1
println(len) // 输出-1
-
Kotlin的字符串方法
1. capitalize() 首字母大写
2. decapitalize() 首字母小写
3. commonPrefixWith() 返回两个字符串相同的前缀
4. commonSuffixWith() 返回两个字符串相同的后缀
5. contains() 支持正则表达式匹配
var str = "sdfasdf897.org"
println(str.commonPrefixWith("asfadsfas.org")) // 输出asfa
println(str.commonSuffixWith("asfadsfas.org")) // 输出org
println(str.contains("Regex("\\d{3}"))) // 输出897