首页 > 其他分享 >【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

时间:2023-01-26 15:09:03浏览次数:38  
标签:变量 Kotlin 空值 可空 null name


文章目录

  • ​​一、Kotlin 的空安全机制​​
  • ​​二、变量可空性​​
  • ​​1、默认变量不可赋空值​​
  • ​​2、声明可空类型变量​​






一、Kotlin 的空安全机制



Java 中的空指针问题 :

在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 ,

该异常是 运行时 才爆出的 , 在 代码编写时 以及 编译期



Kotlin 的空安全机制 :

在 Kotlin 语言 中 , 针对 空指针异常 问题 进行了优化 , 引入了 空安全机制 ,

在代码编写后的 编译期 , 就可以 提前排查出可能出现的空指针异常问题

这样极大地提高了 Kotlin 程序的 代码健壮性 ;






二、变量可空性



1、默认变量不可赋空值



在 Java 中 , 引用类型的变量 默认为 ​​null​​ 空值 ;

但是在 Kotlin 中 , 变量默认不可为 ​​null​​ 空值 ,

这样所有的 变量 在默认状态下 , 都有一个 默认的实例对象 ,

从而极大的 减少了 空指针异常 出现的概率 ;



代码示例 : 先定义一个 ​​name​​​ 变量 , 为其赋值字符串 ​​"Tom"​​ ,

然后再为其赋值 ​​null​​ 空值 ;

fun main() {
var name = "Tom"
name = null
}

此时 , 在 IntelliJ IDEA 中 就会提示如下报错信息 :

Null can not be a value of a non-null type String

【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )_android


这是因为 ​​ var name​​ 变量 默认为非空的 ,

在 Kotlin 中 不允许将 默认变量 赋值一个空值 ,

除非 将该变量声明为 可空类型 ;



2、声明可空类型变量



声明可空类型变量 :

如果要声明一个 可空类型的变量 , 必须 声明该变量的具体的类型 ,

并在该类型后添加 ​​?​​ 标志 , 具体格式如下 :

var 变量名: 变量类型?



代码示例 : 在下面的代码张红 ,

将 ​​var name​​​ 变量声明为了 ​​String?​​ 可空类型 ,

此时就可以为 该变量 赋值 ​​null​​ 值 ;

fun main() {
var name: String? = "Tom"
name = null
}

进行了 ​​String?​​ 可空类型声明后 , 在 IntelliJ IDEA 中 , 就不再进行报错了 ;

【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )_kotlin_02


标签:变量,Kotlin,空值,可空,null,name
From: https://blog.51cto.com/u_14202100/6023528

相关文章

  • 给Android SDK设置环境变量
    Android官方在介绍如何安装AndroidSDK时,有这样一句话:Tip:ForeasyaccesstotheSDKtoolsfromacommandline,addthelocationoftheSDK'stools/andplatform......
  • 说一说JavaScript有几种方法判断变量的类型?
    typeof、instanceof、Object.prototype.toString.call()(对象原型链判断方法)、constructor(用于引用数据类型)标准回答JavaScript有4种方法判断变量的类型......
  • C++指针类型的局部变量初始化
    编译器一般不会对一般变量进行初始化,当然也包括指针。所以负责初始化指针变量的只有程序员自己。使用未初始化的指针是相当危险的。因为指针直接指向内存空间,所以程序员很......
  • 不能直接在 CSS 变量中写计算,针对于 Scss 项目
    不论是在Scss还是在CSS中,给CSS变量(自定义变量)直接写计算,都不会生效。例如:*{--text-size:calc(100px*1);}打开浏览器查看计算的样式表中,并没有计算得到10......
  • 02_变量
    """_*_coding:utf-8_*_@Time:2023/1/1621:13@Author:软柠柠吖@Description:变量变量:在程序运行时,能储存计算结果或能表示值的抽象概念。......
  • 笔试:交换两个int的值,且不使用第三个变量的引入
    初级解法:#include<stdio.h>intmain(){inta=3;intb=5;printf("交换前:a=%db=%d\n",a,b);a=a+b;//a变成了两个数字的和但b还是原来的bb=a-b;//得到了原来的a,将......
  • Windows11系统下配置JAVA环境变量(JDK-19版本)
    JDK下载1、访问oracle官网https://www.oracle.com/2、点击导航条中的Resources,点击DeveloperDownlads进入3、继续点击Java进入4、继续点击Java(JDK)for......
  • JAVA的注释和变量名称
    1.注释(1)单行注释为//.....例://这是一行注释(2)多行注释是/*.......................*/例:/*我是第一行注释我是第二行注释我是第三行注释*/(3)文档注释/**................
  • 判断语句 之 变量内容类型判断
    参数释义string判断字符串upper判断全大写lower判断全小写-hosts:alltasks:-name:teststringvars:msg:ABCdebug:......
  • 判断语句 之 变量判断
    参数释义示例defined变量已定义when:usernameisdefinedundefind变量未定义when:usernameisundfinednone变量已定义未赋值when:usernameisn......