Kotlin语言在Android Studio中应用前景广阔,本文是编者在应用开发中查找资料的总结,内容主要来自网络,读者可以作为手册来查找并复制有用的内容到自己的应用当中。 Kotlin语言部分讲述了Kotlin支持的基本数据类型的定义和字节数,集合类型:List、Map和Set类,可变长度和不可变长度集合类型的定义,结合类型的成员和方法,字符串类型详解,类的定义,枚举类、数据类和密封类。
Kotlin实战(一)
Kotlin 基本数据类型、变量、常量。变量定义修饰符两个: val、var。val表示该变量可以初始化一次,以后不能再赋值。var表示该变量可以随时赋值。
一、简介
Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发。
Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
Kotlin已正式成为Android官方支持开发语言(Google IO 2017宣布)。
分享关于kotlin的几个网站
kotlin官方网站:https://kotlinlang.org/
kotlin官方网站(中文翻译版):https://www.kotlincn.net/
kotlin在线工具网站(可执行kotlin代码):https://try.kotlinlang.org/
二、Kotlin数据类型
2.1 kotlin的基本数值类型
包括Byte,Short,Int,Long,Float,Double等。与java有差别的是字符不属于数值类型,而是一个独立的数据类型。其内存大小则分别是Byte 8位,Short 16位,Int 32位,Long 64位,Float 32位,Double 64位,与Java基本没有差别。
2.2字面常量
下面是所有类型的字面常量:
十进制:123
长整型以大写的L结尾:123L
16进制以0x开头:0x0F
2进制以0b开头:0b00001011
***注意:kotlin不支持8进制
kotlin同时也支持传统符号表示的浮点数值:
Double默认写法:123.5,123.5e10
Float使用f或者F后缀:123.5f
可以使用下划线使数字常量更易读:
val oneMillion = 1_000_000
val creditCarNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = ob11010000_010100_11100
2.3比较两个数字
kotlin中没有基础数据类型,只有封装的数字类型,你每定义的一个变量,kotlin帮你封装了一个对象。这样确保了不会出现空指针。数字类型也一样。所有在比较两个数字的时候,就有比较数据大小和比较两个对象是否相同的区别了。
* === :表示比较对象地址。
*==:表示比较两个值的大小。
2.4类型转换
由于不同的表示方式,较小类型并不是较大类型的子类型,较小的类型不能隐式的转换为较大的类型。这意味着在不进行显示转换的情况我们不能把byte型值赋给一个int变量。
val b: Byte = 1 //ok ,字面值是静态检测的
val i : Int = b //错误
//正确做法
val i :Int = b.toInt()
由此引出的各种数据类型转换方法。
toByte() : Byte
toShort():
toInt():
toLong():
toFloat():
toDouble():
toChar():
但是有些情况下也是可以使用自动类型转换的,前提是可以根据上下文环境推断出正确的数据类型而且数学操作符会做相应的重载。例如:
val 1 = 1L + 3 //Long + Int =》 Long
2.5位操作符
对于Int和Long类型,还有一系列位操作符可以使用,分别是:
shl(bits) - 左移位(Java 《《)
shr(bits) -右移位(Java 》》)
ushr(bits) -无符号右移位(Java 》》》)
and(bits) -与
or(bits) -或
xor(bits) -异或
inv() -反向
2.6字符
和Java不同的是,kotlin 中Char不能和数字操作,Char必须是是单引号‘包含起来的,比如普通字符’0‘,’a‘。
fun check(c : Char) {
if (c == 1) { //错误 类型不兼容
}
}
字符字面值用单引号括起来:’1‘。特殊字符可以用反斜杠转义。
支持以下转义序列:\t,\b,\n,\r,\’,\“,\\和\$。编码其他字符要用Unicode转义序列语法:”\uFF00“。
当需要可空引用时,像数字,字符会被装箱。装箱操作不会保留同一性。
2.7布尔
布尔用Boolean类型表示,它有两个值:true和false。
若需要可空引用会被装箱。
内置的布尔运算有:
|| -短路逻辑或
&& - 短路逻辑与
! - 短路逻辑非
2.8 数组
数组用类Array实现,并且还有一个size属性及get和set方法。
由于使用[]重载了get和set方法。所以我们可以通过下标很方便的获取或者设置数组对应位置的值。
数组的创建两种方式:一种是使用函数arrayOf();另外一种是使用工厂函数。如下所示我们分别是两种方式创建了两个数组:
fun main(args: Array《String》){
val a=arrayOf(1,2,3) //定义数组{1,2,3}
val b=Array(3,{i-》2*i}) //定义数组{0,2,4}
println(a[0]) //输出 1
println(b[0]) //输出 0
}
注意:[] 运算符代表调用成员函数get()和set()。
注意:与Java不同的是,kotlin中数组是不型变的。(invariant)。
除此之外还有 ByteArray,ShortArray,IntArray,用来表示各个类型的数组,省去了装箱操作,因此效率更高,其用法同Array一样。
2.9字符串
和Java一样,String是不可变的。方括号[]语法可以很方便的获取字符串中的某个字符,也可以通过for循环来遍历:
fun main(args: Array《String》){
val str=”asdfghjkl”
for(c in str){
print(c+”\t”)
}
}
kotlin支持三个引号‘’‘ ’‘’括起来的字符串,支持多行字符串比如:
fun main(args:Array《String》){
val str=”””
白日依山近,
黄河入海流。
欲穷千里目,
更上一层楼。
“””
print(str)
}
当然也可以通过.trimMargin()删除多余的空白。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !