美文网首页
kotlin(一):基本语法之属性

kotlin(一):基本语法之属性

作者: 小川君 | 来源:发表于2018-08-31 19:44 被阅读0次
属性修饰符
kotlin中,使用‘var’、‘val’来修饰属性,其中val修饰的是常量,相当于‘final’,var修饰变量,
一个属性必有这两个关键字其中一个来修饰   
```
var s;
val s: Int = 0
```
属性命中规范:

java中通过 属性类型 属性名 = 属性值; 的方式来声明属性

String str = "chuan";

kotlin中则通过 属性修饰符 属性名: 属性类型 = 属性值的方式来声明属性

index: Int = 0
set/get函数

声明一个属性完整的语法是(以var为例):

var index: Int = 0
    get() = this
    set(intValue){
        this = intValue
    }
    
使用文字说明就是

属性修饰符 属性名称: 属性类型 = 属性初始值
    get函数
    set函数

其中 属性类型可以省略,当然是在可以根据属性初始值判断出属性类型的前提下
属性初始值以及set、get函数也可以省略
如下
var index1 = 0

var index2: Int 
index2 = 0

var index3: Int = 0

最后再加上前面的那个表达式 
var index4: Int = 0
    get() = field
    set(intValue){
        field = intValue
    }
其中field代表当前属性本身的值,且只能使用在访问器(个人觉得即set/get方法中)

前面几个表达式中少了这样一种命名方式:var index5: Int
有修饰符、属性名以及属性类型,但是没有属性值
当然我们可以使用 var index5: Int? = null ,但是这并不是我们当前小节所需要的,
我们需要的是没有等于号后面的乱七八糟的东西,接着往下看
延迟初始化属性与懒加载

对于上面的问题,我们可以使用lateinit来解决
lateinit 意为延迟初始化,即在编译期检查时并不会因未初始化而报错,相应的,我们需要在引用之前进行初始化

lateinit var index: String

注意:

1、lateinit只能用来修饰对象,不能用来修饰基本类型,因为基本类型在类加载后都会有一个默认的初始值,
    String既是基本类型又是数据类型

2、lateinit修饰的属性,只能是成员属性,即类属性

3、必须是var修饰且该属性没有自定义的get/set方法

与lateinit相对是懒加载by lazy

val str: String by lazy{
    "str init by 'by lazy'"
}

{}中的最后一行为返回值 即str的值为"str init by 'by lazy'"

by lazy懒加载即在第一次引用的时候才会进行初始化,(跟java内部类单例是不是有点相同的味道)在初始化过程中如果消耗大量资源时,会非常受用

这里说到了单例,就顺便写一下ktolin下的单例

public class Singleton private constructor() {

    companion object {
        val instance: = Singleton()
    }
}

companion object 意为伴生对象,具体的我也不清楚,但是可以理解为java中的static关键字是没有错的,静态方法

 companion object {
        fun getCurrentVersion(): String {
            return xxxx
        }
    }

关于private constructor可以理解为是类的构造器,关于类的会在后面说到

空属性的创建

kotlin号称永不抛出空指针异常,相应的就需要我们对待空对象时有相应的处理

var str: String? = null

?在这条语句中代表可为空 str?.toString()str?代表str不为空时会调用后面的函数,如果为空则不调用

相关文章

  • kotlin(一):基本语法之属性

    属性修饰符 属性命中规范: java中通过 属性类型 属性名 = 属性值; 的方式来声明属性 kotlin中则...

  • Kotlin学习之基础语法

    写在前面的:1,Kotlin学习之基础语法2,Kotlin学习之类和继承3,Kotlin学习之属性和字段4,Kot...

  • kotlin进阶—函数、泛型、高级特性

    以下是我的kotlin系列文章kotlin基础知识—基本语法(一)kotlin基础知识—基本语法(二) 前言 我个...

  • kotlin之基本语法

    函数 变量 字符串模板 类和属性 自定义访问器 目录和包 和java类似,但是kotlin不区分导入的是类还是函数...

  • Kotlin之基本语法

    创建 Javabean 对象 关键字:data 包含以下所有的属性: getters (and setters i...

  • 20.Kotlin属性委托

    Kotlin属性委托(delegated property) 示例代码 输出 语法是: val/var <属性名>...

  • Kotlin 基础学习笔记

    Kotlin 基础教程 Kotlin 文件以 .kt 为后缀 一、基本语法 二、数据类型 Kotlin 的基本数值...

  • kotlin入门潜修系列教程

    kotlin入门潜修之开门篇—kotlin是什么? kotlin入门潜修之基础篇—基础语法kotlin入门潜修之基...

  • Kotlin 实战语法(四)

    Kotlin Kotlin 实战语法(四) 上一次大家学会了Kotlin的基本数据类型 Kotlin 基本数据类型...

  • kotlin搭建安卓应用

    Kotlin开发安卓应用 Kotlin基本语法 Kotlin搭建安卓项目的项目清单 Kotlin调用UIFrame...

网友评论

      本文标题:kotlin(一):基本语法之属性

      本文链接:https://www.haomeiwen.com/subject/kfuewftx.html