Kotlin - 基本数据类型

本文详细介绍了Kotlin中的变量声明,包括var、val、const val的区别以及它们对应的Java代码转换。讲解了Kotlin的数据类型,如Byte、Short、Int、Long、Float、Double、Char及其转换规则。同时,还讨论了类型检测关键字is、!is的使用。

一、属性声明

顶层属性(top-evel property)在 .kt 文件中声明的。
类的属性(class property)在类中声明的。
局部属性(local property)在函数中声明的。
关键字名称说明使用场景转为Java代码

var

variable的缩写

读作 [vɑ:r]

可变属性

带有getter、setter

赋值可被修改时使用(可读可写)private

val

value的缩写

读作 [væl]

只读属性

在函数外使用(修饰属性):带有getter,重写该函数可以实现每次返回不同值。

不需要再被赋值时使用(只读)private final
运行时常量在函数内使用(修饰局部):无法实现getter也不满足const条件,无法分配新值因而可看作常量。
const val编译时常量

只能在函数外使用:因为编译时就需要赋值,而函数是运行时才调用。只能修饰 String 或 基本数据类型,因为是 public 没有 getter 性能更优。

需要供全局调用的时候使用(常量)public static final
Kotlin {
    //完整格式:关键字 变量名 冒号 数据类型 赋值运算符 值
    var num: Int = 3    //默认是public的
    val str = "haha"    //简写格式,类型可自动推导
    const val ch = 'A'
}
//点击 Tools->Kotlin->Show Kotlin ByteCode查看
Java {
    private int num = 3;   
    public final int getNum() { return num; }
    public final void setNum(int var0) { num = var0; }

    private final String str = "haha";
    public final String getStr() { return str; }

    public static final char ch = 'A';
}

二、基本数据类型

Kotlin 中没有基础数据类型,只有封装的数字类型(首字母大写了)。除以0会得到NaN,表示不是一个数,因此无法比较,所以两个NaN的结果不相等。

类型名称位宽占用字节取值范围具体数值
Byte字节81-2^7 ~ 2^7-1-128 ~ 127
Short短整型162-2^15 ~ 2^15-1-32768 ~ 32767
Int整型324-2^31 ~ 2^31-1-2147483648 ~ 2147483647
Long长整型648-2^63 ~ 2^63-1-9223372036854774808 ~ 9223372036854774807
Float单精度324小数点后6位

.MIN_VALUE指最小非0正数,需要负数得加个负号。

Double双精度648小数点后15-16位
Boolean布尔true 或 false
Char字符162

只能和 Int 类型进行加减

可显示地转换为 Number 类型

\t 制表符

\b 退格键(键盘上的←)

\n 回车

\r 光标回到行首

\' 单引号

\" 双引号

\\ 反斜杠

\$ 美元符号

//支持自动类型推断:对于已声明并赋值的变量,允许省略数据类型的声明
val aaa : Byte = 2           //不支持推断简写
val bbb : Short = 2          //不支持推断简写
val ccc : Int = 2            //val ccc = 2,Int是系统默认的整数类型
val ddd : Long = 2           //val ddd = 2L,用L结尾区分于Int
val eee : Double = 12.34     //val eee = 12.34,Double是系统默认的小数类型
val fff : Float = 12.34      //val fff = 12.34F,用F结尾区分于Double
val ggg : Char = 'a'         //val ggg = 'a' 
val hhh : String = "Hello"   //val hhh = "Hello"
val iii : Boolean = false    //val iii = false

val jjj = aaa + bbb          //jjj为Int类型
val kkk = ccc + ddd          //kkk为Long类型
val lll = 'a' + 1            //打印:b

三、进制(不支持8进制)

二进制0b00001011以 0b 开头
十六进制0x0F以 0x 开头

四、类型转换

Kotlin 数据类型都是一个封装的 class,较小类型并不是较大类型的子类,不能隐式转换只能显示转换。

toByte()转换为 Byte
toShort()转换为 Short
toInt()转换为 Int
toLong()转换为 Long
toFloat()转换为 Float
toDouble()转换为 Double
toChar()转换为 Char

五、类型检测 is、!is

用来检查该对象(变量)是否属于某数据类型或其派生类,类似于 Java 中的 instanceof。

//多使用智能类型转换,避免使用强转
if(obj is String) {
    obj + "abc"    //obj智能类型转换为String
}

六、强制类型转换 as、as?

用来将某种类型的变量强制转换成另一种类型。

as

强转运算符

转换不成功抛异常 ClassCastException。

as?

安全转换运算符

转换不成功返回null。
//处理不确定类型的对象
fun demo(obj: Any) {
    val str = obj as? String
    //配合 ?: 提供为null时的默认值
    print("字符串的长度为:${str?.length ?: "不是字符串"}")
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值