Kotlin-变量定义,与类型

发布时间:2024年01月11日

变量定义

Kotlin可以定义的时候不标明数据的数据类型,编译器会根据初始值确定类型

fun main() {
    var b:Int
    var name = "crazyit.org"
    //声名变量的时候指定初始值,编译器会根据初始值确定该变量的类型为String
    b = 20
//    name = 12 //①The integer literal does not conform to the expected type String
    var sum :String = 500 //当变量的类型已经确定,但是用户赋值不一致时会报错
    val a = "你好"
//    a = "123" //②Val cannot be reassigned
}

整型

提供4种类型:Byte、Short、Int、Long
在这里插入图片描述
但是Kotlin时安全语言,所以不允许为空,如果需要存储空值的话就需要使用Byte?、Short?、Int?、Long?。
普通类型的整数类型会映射到java的基本类型;带?的数据类型会映射到基本类型的包装类型,
比如:Int类型映射到java的int类型,Int?类型映射到java的Integer类型
Kotlin不支持八进制的整数

浮点型

Kotlin的浮点型又有两种
1、Float
2、Double
除此之外,在Kotlin中还有3个特殊的浮点型数值:正无穷大、负无穷大和非数,例如,使用一个正数除以0.0或对负数将得到正无穷大数值,使用一个负数除以0.0将得到负无穷大数值,0.0除以0.0或对负数开方将得到一个非数
在这里插入图片描述

fun main() {
    var af1=5.2345556f
    println(af1) //输出5.2345557
//    var af2:Float = 25.2345 //会报错,因为25.234默认时Double
    //f1的类型为Double
    var f1 = 5.12e2
    println("f1的值为${f1}")
    var a= 0.0
    println("5.0/a的值为:${5.0/a}") //5.0/a的值为:Infinity(无穷大)
    //所有的正无穷数都相等
    println("${5.0/a == 5000/a}") //true
    println("-5.0/a的值为:${-5.0/a}") //-5.0/a的值为:-Infinity
    var nan :Double = a/a
    println("${nan}") //NaN,表示非数
    println("${nan === nan}") //false 非数自己与自己不相等
}

字符型

字符型通常表示单个字符,字符型值必须使用单引号(')括起来。在Kotlin中char类型就是简简单单的字符型,不能当作整型使用

整型之间的转换

Kotlin与java不同,Kotlin不支持取值范围小的数据类型隐式转换为取值范围大的类型。
在这里插入图片描述
Kotlin要求不同整型的变量之间或值之间必须进行显示转换
Any类型是所有Kotlin的根父类

Boolean类型

Null安全

    var str= "fkit"
    //由于 str 转换为 Int 有可能失败,故 num 有可能没有值
    //因此不能使用 Int 来声明 num 的类型
    var num1: Int = str.toIntOrNull() //失败
    var num2: Int? = str.toIntOrNull() //成功
    println (num1)

安全调用

  user?.dog?.name

如果user属性不为空则返回dog熟悉,如果dog属性不为空则返回dog的name属性,这就是Spring EL的安全调用,使用 “?.”进行安全调用

Elvis运算

var len = b?.length?:-1

?:是Elvis运算符,如果?: 左边的表达式不为null,则返回左边表达式的值,否则则返回?:右边表达式的值,由于在Kotlin中retuen和throw都属于是表达式,因此他们也都可以用在“?:”运算符的右边。

字符串

用三个引号引起来的部分都是字符串的内容,包括换行等各种特殊的字符

文章来源:https://blog.csdn.net/weixin_46362658/article/details/135499231
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。