kotlin学习笔记-数据类型 数字 numbers

发布时间:

kotlin学习笔记-数据类型 数字 numbers

整数类型

感觉 平时用 Int 就行了, 除非是特殊场景需要优化性能,否则感觉用不到 Byte Short 遇到很长的 就用 Long 那如果 要处理比 Long 更大的数呢? 就用 BigInteger 类, 但是这个类不是 kotlin 标准库的一部分,需要导入 import java.math.BigInteger

类型大小(比特数)最小值最大值
Byte8-128127
Short16-3276832767
Int32-2,147,483,648 (-231)2,147,483,647 (231 - 1)
Long64-9,223,372,036,854,775,808 (-263)9,223,372,036,854,775,807 (263 - 1)
val one = 1 // Int 根据长度 自动推断为Int val threeBillion = 3000000000 // Long 根据长度 自动推断为Long val oneLong = 1L // Long 手动指定为Long val oneByte: Byte = 1 // 手动指定为Byte

浮点数类型

和其他语言差不多,就是处理小数的, 可承受范围不一样

类型大小(比特数)有效数字比特数指数比特数十进制位数
Float322486-7
Double64531115-16
val pi = 3.14 // Double 所有小数,默认情况自动推断为Double,而不是Float,因为Double的范围更大,精度更高(容错性更好?) // val one: Double = 1 // 错误:类型不匹配 , 手动声明为Double,但是实际跟的却是整数1,所以报错, 必须得 加个小数点, 如 1.0 val oneDouble = 1.0 // Double 自动推断为Double val e = 2.7182818284 // Double 自动推断为Double val eFloat = 2.7182818284f // Float,实际值为 2.7182817 , 因为 Float 只能承受 6-7 位的十进制位数,超过承受范围就会溢出

数字常量中的下划线

在数字里加下划线主要是方便 人眼辨势,方便阅读,不会影响程序的执行结果

val oneMillion1 = 1000000 // 一百万, 但是人眼看起来不方便,不容易阅读 val oneMillion2 = 1_000_000 // 一百万, 人眼看起来方便,容易辨势 val creditCardNumber1 = 1234567890123456L // Long类型,不容易阅读 val creditCardNumber2 = 1234_5678_9012_3456L // Long类型,银行卡、信用卡号码 配合 下划线,方便阅读 val bornNumber1 = 19991122L // 出生日期 val bornNumber2 = 1999_11_22L // 出生日期 val hexBytes1 = 0xFFECDE5E // 16进制 用0x开头 val hexBytes2 = 0xFF_EC_DE_5E // 16进制 用0x开头 val bytes1 = 0b11010010011010011001010010010010 // 2进制 用0b开头 val bytes2 = 0b11010010_01101001_10010100_10010010 // 2进制 用0b开头

数字类型的互相转换

不同类型的数字不能直接赋值,需要转换 调用数字的方法,把数字转换为其他类型

val b: Byte = 1 // val i: Int = b // 错误, 类型不同,不能直接赋值 val i1: Int = b.toInt() // 调用b的toInt方法,把b转换为Int,转换后的结果就可以赋值给Int类型了

数字运算

就是其他语言都支持的 四则运算, 没啥难点

println(1 + 2) println(2_500_000_000L - 1L) println(3.14 * 2.71) println(10.0 / 3) println(10.0 % 3)

位运算

这位运算 就是 infix 修饰的函数 我平时用不到位运算,所以就不花时间学了,知道有这个东西就行了

val x = (1 shl 2) and 0x000FF000

ref

https://book.kotlincn.net/text/numbers.html 


2025 © 糊涂.