变量声明
关键字 | 名称 | 说明 | 使用场景 | 转为Java代码 |
var variable的缩写 | 可变变量 | 带有getter、setter | 赋值可被修改时使用(可读可写) | private static |
val value的缩写 | 只读变量 | 在函数外使用(修饰属性):带有getter,重写该函数可以实现每次返回不同值。 | 不需要再被赋值时使用(只读) | private final |
运行时常量 | 在函数内使用(修饰局部):无法实现getter也不满足const条件,无法分配新值因而可看作常量。 | |||
const val | 编译时常量 | 只能在函数外使用:因为编译时就需要赋值,而函数是运行时才调用。只能修饰 String 或 基本数据类型,因为是 public 没有 getter 性能更优。 | 需要供全局调用的时候使用(常量) | public static final |
Kotlin {
//完整格式:关键字 变量名 冒号 数据类型 赋值运算符 值
val num: Int = 3 //默认是public的
val str = "haha" //简写格式,类型可自动推导
const val ch = 'A'
}
//点击 Tools->Kotlin->Show Kotlin ByteCode查看
Java {
private static int num = 3;
public static final int getNum() { return num; }
public static final void setNum(int var0) { num = var0; }
private static final String str = "haha";
public static final String getStr() { return str; }
public static final char ch = 'A';
}
基本数据类型
Kotlin 中没有基础数据类型,只有封装的数字类型(首字母大写了)。除以0会得到NaN,表示不是一个数,因此无法比较,所以两个NaN的结果不相等。
类型 | 名称 | 位宽 | 占用字节 | 取值范围 | 具体数值 |
Byte | 字节 | 8 | 1 | -2^7 ~ 2^7-1 | -128 ~ 127 |
Short | 短整型 | 16 | 2 | -2^15 ~ 2^15-1 | -32768 ~ 32767 |
Int | 整型 | 32 | 4 | -2^31 ~ 2^31-1 | -2147483648 ~ 2147483647 |
Long | 长整型 | 64 | 8 | -2^63 ~ 2^63-1 | -9223372036854774808 ~ 9223372036854774807 |
Float | 单精度 | 32 | 4 | 小数点后6位 | .MIN_VALUE指最小非0正数,需要负数得加个负号。 |
Double | 双精度 | 64 | 8 | 小数点后15-16位 | |
Boolean | 布尔 | true 或 false | |||
Char | 字符 | 16 | 2 | 只能和 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。