我的Kotlin学习之旅 ( 三 )
来源:互联网 发布:java变量名命名规则 编辑:程序博客网 时间:2024/06/10 17:51
这里先简单的说一些Kotlin的习惯用语。
1.数据类
只保存数据的类,在 kotlin 中这样的类称之为 data 类,用 data 标注:
data class User (val userName: String,val age: Int)
这里可以直接省略一对大括号,data类必须要有一个主的构造函数
值得注意的是:
1.主构造函数应该至少有一个参数,否则代码会直接报错
2.主构造函数的所有参数必须标注为 val 或者 var (val的话,一旦对参数的值进行了设置,该参数的值就不能再改变了)
3.数据类不能是 abstract,open(可以被继承的意思),sealed(密封类),或者 inner (内部类)
4.数据类不能继承其它的类(但可以实现接口)
2.多重声明
val jane = User("jane", 35)val (name, age) = jane
在代码中对数据类进行多重声明之后,就可以直接拿name和age来使用了
3.只读List
val list = listOf("a","b","c")
listOf会创建一个不可被修改的list,不管前面的接收者是val还var,item的值都不可被改变
没有传统的.add方法哟
例如下面的代码就会报错(item字样上飘红):
for (item in list){ item = "ccc"}
取值:
list[i] 或者 list.get(i)
推荐使用前者
4.只读map
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
参数的前者是key,to后面是value
使用:
map["a"]
5.如果不为空则… 的简写
例如:
val list = listOf("a","b","c") list?.size
第二行中代表的是,返回当list不为空时,返回它的size
6.如果不为空…否则… 的简写
list?.size ?: "empty"
list?:这是一个可以为null的list,即list可空
?: 是否则的意思,当list不为空时,返回它的大小,为空时返回“empty”的字符串
7.利用 with 调用一个对象实例的多个方法
class Turtle { fun penDown() fun penUp() fun turn(degrees: Double) fun forward(pixels: Double)}val myTurtle = Turtle()with(myTurtle) { // 画一个100像素的正方形 penDown() for(i in 1..4) { forward(100.0) turn(90.0) } penUp()}
这一点我觉得挺好玩的,当想调用一个类的很多方法时,使用with(对象实例),就可以在
with的有效范围内直接调用该类的方法,很便捷
///////////////////////////////////////////////////////////////
接下来简单的了解一下Kotlin的基本类型
关于数值,在Kotlin中,字符char不是数值类型,用单引号包裹起来
类型 ———字宽 —– 字节
Double —– 64 ———8
Float ——– 32 ——— 4
Long ——– 64 ———8
Int ———– 32 ——— 4
Short ——- 16 ——– 2
Byte ——— 8 ——— 1
关于比较问题:
val a: Int = 10000print (a === a ) //打印 'true'val A: Int? =aval anotherA: Int? = aprint (A === anotherA ) //注意这里打印的是 'false'
false的原因是装箱过的数值是不保留特征的,个人理解是就像对象一样,这两个可空的Int值,指向的是两个不同的地址(=== 表示的判断比较的两个值是否是同一个对象)
但是另一方面,它们的值是相等的
print (A == anotherA ) //注意这里打印的是 'true'
关于显示转换
val a: Int? =1 //一个装箱过的 Int (java.lang.Integer)val b: Long? = a // 一个隐式装箱的 Long (java.lang.Long)print( a == b )
这里打印出来的是false,Kotlin不支持隐示转换,需要下面这样做:
val b: Long? = a!!.toLong()
!! 的意思是返回a的非空,因为上面的a的类型是Int?,除了是Int,还可以为空
当a非空的前提下,可以显示的转换成Long型的值
关于String
Kotlin 有两种类型的 string :一种是可以带分割符的,一种是可以包含新行以及任意文本的。带分割符的 string 很像 java 的 string
val s = "Hello World!\n"
整行String 是由三个引号包裹的(“”“),不可以包含分割符但可以包含其它字符
(分隔符可以是空格,逗号,#号等等之类)
val text = """ for (c in "foo") print(c)"""
- 我的Kotlin学习之旅 ( 三 )
- 我的Kotlin学习之旅(一)
- 我的Kotlin学习之旅(二)
- 我的Kotlin学习之旅(四)
- 我的Kotlin学习之旅(五)
- 我的Kotlin学习之旅(六)
- 我的u3d学习之旅三
- 我的Docker学习之旅<三>
- kotlin学习之旅
- Kotlin与Android的奇妙之旅-FindViewbyid(三)
- 我的Kotlin成长之路
- 我的机器学习之路(三)
- Kotlin学习教程(三)
- Kotlin编程之三
- Kotlin学习之基本数据类型的学习
- Kotlin学习三之函数和包的定义和流程控制
- kotlin 学习之 HelloWorld
- Kotlin学习之函数
- H5 webapp开发 软键盘 常见问题
- D
- SpringMvc-WebSocket客户端
- html5常用头部、无数据尾部
- 目标
- 我的Kotlin学习之旅 ( 三 )
- Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains value f
- linux 正确安装opencv解决无法读取视频的问题
- 关于AlterDialog的一点理解
- 第三章链表
- 第十章:内部类
- openmp并行的计时问题
- KMP算法(作业六)
- JQuery学习总结