博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin 笔记
阅读量:7080 次
发布时间:2019-06-28

本文共 1579 字,大约阅读时间需要 5 分钟。

hot3.png

伴生对象

伴生对象(companion object )类似于java中的静态关键字static。在Kotlin没有这个关键字,而是伴生对象,具体用法

open class People constructor(var id: String,  var name: String){    //可以类中初始化属性:    var customName = name.toUpperCase() //初始化属性    //使用constructor前缀声明,且必须调用primary constructor,使用this关键字    constructor( id: String, name: String, age: Int) : this(id, name) {        println("constructor")    }    init {        println("初始化操作,可使用constructor参数")    }   //,Kotlin的class并不支持static变量,所以需要使用companion object来声明static变量,   // 其实这个platformStatic变量也不是真正的static变量,而是一个伴生对象,    companion object {        val ID = 1    }}

使用的话直接People.ID

变量类型:可空

kotlin的特性之一是类型安全。定义变量时需要定义该变量是否为空,一旦要求变量不能为空,那后续的空指针问题自然也不复存在。我们先来看kotiln里是如何定义变量的:

java:String str = "test";final String str2 = "test2";String str3;kotlin:var str = "test"val str2 = "test2"var str3:String ?= null

kotlin使用var,val关键字定义变量,如果在定义变量时直接赋值,则可以不用指定变量类型,否则需要在变量名后使用“:”来指定类型。在类型后加“?”表示该变量可空。如果变量可空,那在后续使用变量时,就必须先判断是否为空。 另外从代码中可以看出很重要的一点,那就是:从此再也不用写分号啦

var a:Int = null  //错误,类型后没?,即不可空类型,自然不能等于nullvar a:Int? = null  //正确val canNull: Int ? = 0 canNull.toFloat  //错误,可空变量调用时要判断空canNull?.toFloat   //正确,(如果是null,什么都不做)canNull!!.Float   //正确,(如果null,报空指针)val canNotNull: Int  = 0 canNotNull.toFloat  //正确

那如果在定义变量时(例如定义成员变量),又想该变量不为空,又不想子定义时就初始化要怎么办呢?使用lateinit关键字

lateinit var test:String //正确lateinit val test:String //错误lateinit var test:Float //错误

可见,lateinit修饰符只能修饰不可空类型,并且不允许修饰基础类型(四类八种基础类型int, double,boolean等)。

Java四类八种基础类型

java基本数据类型:四类八种

数值型:整型 byte short int long 非数值:字符型 char

浮点型 float double 布尔 boolean

转载于:https://my.oschina.net/u/1270405/blog/997553

你可能感兴趣的文章
iOS 数据解析
查看>>
GPUImage学习一
查看>>
当生活变成了生存,知识也就背上了灰色的沉重。。。
查看>>
关于多线程变量共享问题_改进
查看>>
QSpinBox
查看>>
Activity和Window之间的关系
查看>>
微服务架构
查看>>
有关Ossim 4.8系统首次登陆设置密码失败问题的解决方法
查看>>
简单快速的上手使用gitbash
查看>>
neo4j开发
查看>>
系统规划笔记
查看>>
jtds用PreparedStatement查询大数据时慢的问题(轉)
查看>>
jsp中include指令静态导入和动态导入的区别详解
查看>>
Java构造和解析Json数据的两种方法详解一
查看>>
CopyOnWriteArrayList
查看>>
mysql数据库详解(续二)
查看>>
我的友情链接
查看>>
通过简单设置让CACTI支持中文显示
查看>>
WAF+SLB负载不均衡案例分享
查看>>
我的友情链接
查看>>