博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kotlin 基础入门
阅读量:2391 次
发布时间:2019-05-10

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

== 和 ===

在java中我们经常遇到的面试问题两个String的‘==‘和‘equals‘比较的结果,这就是考验大家对String关于‘==‘和‘equals‘的理解。在kotlin中出现了一种===的比较两个对象的运算符,今天就来看看‘===‘与‘==‘在kotlin中到底有什么区别。

在kotlin中,‘==‘表示比较值,‘===‘表示比较两个对象的地址是否相等, 至于Integer.valueOf的不同这个是java基础,大家看看kotlin对应java的源码再看看valueOf的源码就知道了。

参考文章

关于null

var a: String = "abc"a = null // compilation error,不可null类型var b: String? = "abc"b = null // ok,可null类型b?.length //可null必须判空val l: Int = if (b != null) b.length else -1//等价于val l = b?.length ?: -1
  • 1、Kotlin有两种类型:一个是非空引用类型,一个是可空引用类型。
  • 2、对于可空引用,如果希望调用它的成员变量或者成员函数,直接调用会出现编译错误,有三种方法可以调用:
    (1)在调用前,需要先检查,因为可能为null
    (2)使用b?.length的形式调用,如果b为null,返回null,否则返回b.length
    (3)使用b!!.length()的形式调用,如果b为null,抛出空指针异常,否则返回b.length

另外,我们知道类型转换可能产生ClassCastException异常,例如:

var a: Long = 1val aInt: Int? = a as Int  // java.lang.ClassCastException// 那么如何避免这个异常呢?改成下面形式就可以了。var a: Long = 1val aInt: Int? = a as? Int

上面这种方法就是安全类型转换,如果类型转换不成功,就会返回null,而不是抛出ClassCastException异常。

转载地址:http://vqqab.baihongyu.com/

你可能感兴趣的文章
一个更好的Post process结构,三角形代替四边形。
查看>>
利用Vertex shader实现Point Sprites
查看>>
图形处理器历史简介
查看>>
System Memory,AGP Memory and Video Memory in D3D.
查看>>
使用辅助库建立openGL编程环境
查看>>
使用Win32API开始openGL编程
查看>>
使用MFC开始openGL编程
查看>>
关于Gbuffer中的normal存储
查看>>
近距离观察Tone mapping.
查看>>
Physically based shading
查看>>
Color correction
查看>>
Temporal AA
查看>>
miniz compared to other real-time and high-ratio compressors
查看>>
Random number for GPU
查看>>
SSR
查看>>
引擎核心架构
查看>>
[转]关于现代CPU,程序员应当更新的知识
查看>>
游戏设计架构的一种方法
查看>>
FMOD音频引擎简单使用
查看>>
通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法
查看>>