Kotlin数据类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ruger008/article/details/89196399

Kotlin 是强类型语言

var:变量,根据初始值来自动分配类型

val:常量,对于局部常量,可在使用前对其进行赋值(声明与赋值分离)

整数类型

Byte Short Int Long
1 2 4 8

Kotlin是null安全的语言

普通类型变量是不接受null值的,如果需要存储null值,需要使用包装类型Byte?、Short?、Int?、Long?

普通类型会映射到java中的普通类型 Int => int

包装类型会映射到java中的包装类型 Int? => Integer

浮点类型

Float Double
4 8

三种特殊的浮点数:正无穷( 0.0 正数\frac{正数}{0.0} )、负无穷( 0.0 负数\frac{负数}{0.0} )、非数( 0.0 0.0 \frac{0.0}{0.0} )

任何正无穷与正无穷、负无穷与负无穷都相等,非数与任何数字都不相等

var a = 1.0;
println(a.javaClass); //默认浮点类型是Double

类型之间的转换

Kotlin缺乏隐形转换,但在表达式中可自动转换

var a : Byte = 1;
var b : Short = 1;
var c = a + b; // 编译器会默认将a、b都提升至Int计算

var a : Byte = 1;
var b : Long = 1;
var c = a + b; // 当前操作数最高等级为Long,所以编译器会默认将a、b都提升至Long计算

Char类型不能当整数进行运算、但有加、减运算支持

加减整数返回Char类型

两个Char类型只可相减、不可相加

类型的自动提升

  1. 所有Byte、Short都提升为为Int类型

  2. 整个表达式的所有操作数会被提升到表达式中最高等级操作数的类型

    等级优先级:Byte --> Short --> Int --> Long --> Float --> Double

//错误实例
var a:Short = 10;
a = a - 5 //报错,因为表达式右侧被提升至Int返回一个Int给等式左侧,由于左侧为Short则报错
println(a)

//正确实例
var a:Short = 10;
a = (a - 5).toShort()//显示转换回Short
println(a)

表达式左侧类型一定要保证与表达式右侧最高等级操作数类型保持一致

println("Hello World" + 'a' + 7);// Hello Worlda7
println('a' + 7 + "Hello World");// hHello World

null安全

var str:String = "Hello"
var a:int = str.toIntOrNull(); //报错,由于a非包装类
var b:int? = str.toIntOrNull();

var c = str.toIntOrNull(); //可交由编译器来判断

Kotlin做出的限制:对于可空类型的对象,不能直接调用对象的方法与属性,避免NPE(空指针异常)

  1. var a:String? = "Hello World"
    if (a != null) {
        println(a);
    }
    

猜你喜欢

转载自blog.csdn.net/Ruger008/article/details/89196399