Kotlin系列之?、?:、!!、:: 特殊符号

这篇具有很好参考价值的文章主要介绍了Kotlin系列之?、?:、!!、:: 特殊符号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

符号一:?

声明一个变量可为空。

var userData : UserData? = null

符号二:?.

        表示这个变量可以为null。该变量如果为null时,不会执行该变量后面的逻辑,也不会抛出空指针异常,俗称空安全。如果不为null,会正常执行该变量后面的内容。

UserData?.name  

符号三:!!

非空断言运算符
        加在变量后面,表示该变量如果为null时,会抛出空指针异常,像java语法一样空指针不安全;如果不为null,才会正常执行该变量后面的内容。

UserData!!.name

符号四:?:

Elvis操作符:
        A ?: B 如果A 的值为空,则会返回B。一般不推荐用!!,建议使用?:来规避崩溃、报错的发生

println(UserData ?: "当UserData为空时执行")

符号五:::

Kotlin 中 双冒号操作符
        表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。

class ColonMagic {

    fun main(msg: Array<String>) {
        //调用peopleDo方法,并传入参数  “I say !” 和 say方法体
        //此处 ::say 是将say方法作为参数传入peopleDo方法
        //此处只是将say作为参数,而不会调用say方法,也就不会println(message),不会输出日志
        peopleDo("I say !", ::say)
    }

    /**
     * 一个参数
     * message:String类型
     */
    private fun say(message: String) {
        println(message)
    }

    /**
     * 两个参数
     * msg: String类型
     * dosay: (String) -> Unit 一个参数为String不需要返回值的方法体
     */
    private fun peopleDo(msg: String, doSay: (String) -> Unit) {
        //doSay(msg)调用的就是传入的say方法,即say(msg),只不过参数名是doSay本质是say方法
        //此处打印出来 I say !  日志
        doSay(msg)
    }
}

符号六:===

        =就是赋值,
        == 相当于Java中的equls()用于比较对象的结构(内容)是否相等(对象的结构就是属性和方法),
        === 用于比较对象的引用是否指向同一个对象,运行时如果是基本数据类型===等价于==

符号七:…

range表达式 表示多少到多少之间

if(num in 10..100)//表示10..100 表示 10到100

符号八:``

反引号
1、Kotlin中可以用反引号解决关键字冲突问题
2、将一个不合法的字符变为合法字符,这种情况一般可以用在一个Kotlin方法不希望被Java调用时使用,因为Java语言层面上不支持反引号这种语法。

fun `is`(){
    //用is这种关键字去命名函数
}

fun `哈哈哈哈`(){
    //用中文这种不合法字符去命名函数   
}

符号九:$

拼接符号

"货号 ${data.code}"    //将data.code值拼接到货号后 
//相当于java中
"货号" + data.code

符号十:@

1、限定this的类型

class User {
    inner class State{
        fun getUser(): User{
            //返回User
            return this@User
        }
        fun getState(): State{
            //返回State
            return this@State
        }
    }
}

2、跳转到指定标签处,可以直接跳出多层循环。像汇编语言中的Loop文章来源地址https://www.toymoban.com/news/detail-572925.html

loop@ for (itemA in arraysA) {   //直接跳出双循环
     var i : Int = 0
      for (itemB in arraysB) {
         i++
         if (itemB > 2) {
             break@loop
         }
         println("itemB:$itemB")
     }
}```

到了这里,关于Kotlin系列之?、?:、!!、:: 特殊符号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android实战基础 - Java、Kotlin 代码互转

    在Android现阶段,Kotlin已经成为普遍性使用的语言,而在其使用阶段中Java和Kotlin的混用很常见,为了便于开发,我们需要掌握Java、Kotlin文件的转换 这应该是我以前刚学Kotlin时就想记录的一篇blog,没想到隔了这么久才进行记录(嗯… 主要这俩年好像有点忙…) 个人建议:正常

    2024年02月11日
    浏览(57)
  • Android java项目添加kotlin混合开发环境配置

    Android Studio java代码中添加kotlin混合开发 1.项目的build.gradle中添加kotlin-gradle-plugin buildscript {     repositories {         google()         jcenter()              }     dependencies {         classpath \\\'com.android.tools.build:gradle:7.3.1\\\'         classpath \\\"org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20\\\"

    2023年04月19日
    浏览(45)
  • Android 安卓开发语言kotlin与Java该如何选择

            如今在Android开发中,应用层开发语言主要是Java和Kotlin,Kotlin是后来加入的,主导的语言还是Java。kotlin的加入仿佛让会kotlin语言的开发者更屌一些,其实不然。         有人说kotlin的引入是解决开发者复杂的逻辑,并且对空指针控制的比较友好,但是我们在开

    2024年02月11日
    浏览(61)
  • 在 Android Studio Java 项目里混合 Kotlin 编程

    首先,先搞明白一个概念,这里的 Java 混合 Kotlin 是指文件层级的混合,即 Java 代码还是写在 .java 文件中,Kotlin 代码还是写在 .kt 文件中,只不过是可以在 Java 的代码中可以调用自己写好的 Kotlin 类,从 Java 的角度看,它并不知道它调用的这个类是 Kotlin 写的,这个类和平时遇

    2024年02月08日
    浏览(52)
  • Android的Gradle、Studio、Java、Kotlin版本兼容

    Android Gradle 插件和 Android Studio 兼容性 Android Studio 版本 所需插件版本 Hedgehog - 2023.1.1 3.2-8.2 Giraffe - 2022.3.1 3.2-8.1 Flamingo - 2022.2.1 3.2-8.0 Electric Eel - 2022.1.1 3.2-7.4 Dolphin - 2021.3.1 3.2-7.3 Chipmunk - 2021.2.1 3.2-7.2 Bumblebee - 2021.1.1 3.2-7.1 Arctic Fox - 2020.3.1 3.1-7.0 Gradle版本和Java版本对应关系 Ja

    2024年02月09日
    浏览(45)
  • 【JoAPP】Android WebView与H5交互实现(JAVA+KOTLIN)

           最近一个应急平台的项目移动端开发,原计划用UNI-APP实现,客户想着要集成语音、视频通话功能,基于经验判断需要买一套IM原生移动端框架去结合H5整合比较合适,没想到最后客户不想采购,而且语音视频通话功能也迟迟未能完全确认,H5部分所开发的业务功能已经

    2024年02月03日
    浏览(43)
  • Android 下第一个fragment app 先Java 后Kotlin

    看着视频学习的,Fragment:3.Fragment使用方法_哔哩哔哩_bilibili 程序的运行效果是,手机页面有2个fragment,每个fragment 有一个text view,一个按钮,按一下显示,\\\'fine,and you?\\\',各自独立。 在android studio 下新建一个工程,类型是 Empty View Activity,本身就有一个Activity。就有文件Main

    2024年02月09日
    浏览(36)
  • Android kotlin高阶函数与Java lambda表达式介绍与实战

            目前在Java JDK版本的不断升高,新的表达式已开始出现,但是在Android混淆开发中,kotlin的语言与Java的语言是紧密贴合的。所以Java lambda表达式在kotlin中以新的身份出现:高阶函数与lambda表达式特别类似。接下来我讲会先讲Java的lambda,再介绍kotlin的高阶函数。 2.1

    2024年02月15日
    浏览(48)
  • NetMock 简介:简化 Java、Android 和 Kotlin 多平台中的 HTTP 请求测试

    NetMock可让我们摆脱在测试环境中模拟请求和响应的复杂性。 NetMock 是一个功能强大、用户友好的库,旨在简化模拟HTTP请求和响应的过程。 对开发者来说,测试HTTP请求经常会带来一些挑战,因为要在测试环境中模拟请求和响应的复杂性很高。这样就会增加手动测试的时间和精

    2024年02月11日
    浏览(42)
  • Android Studio最新好用的插件----Gson转Java实体类/Kotlin Data

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。JSON是由JavaScript语言衍生而来,但JSON并不是JavaScript的一种形式,它是一种独立的格式,可以在任何编程语言中使用。 JSON数据由键值对组成,可以使用大括号来包含一组

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包