Kotlin数据类型

Kotlin 是强类型语言

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

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

整数类型
ByteShortIntLong
1248

Kotlin是null安全的语言

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

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

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

浮点类型
FloatDouble
48

三种特殊的浮点数:正无穷( 正 数 正 数 0.0 正数\frac{正数}{0.0} 0.0)、负无穷( 负 数 负 数 0.0 负数\frac{负数}{0.0} 0.0)、非数( 0.0 0.0 \frac{0.0}{0.0} 0.00.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(空指针异常)

  var a:String? = "Hello World"
  if (a != null) {
      println(a);
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值