一、Kotlin
、Java
基本类型参照表
Kotlin | Java | |
---|---|---|
字节 | Byte | byte/Byte |
整型 | Int & Long | int/integer & long/Long |
浮点型 | Float & Double | float/Float & double/Double |
字符 | Char | char/Char |
字符串 | String | String |
二、声明变量
-
只读变量(不可重新赋值)
通过val
修饰符声明,我们可以认为它是java中带了final
修饰符的变量。声明变量格式:修饰符 变量名: 类型 = 初始赋值
示例:
val b: String = "Hello Kotlin"
-
可读写变量(可重新赋值)
通过var
修饰符声明。 -
Kotlin
支持自动类型推导
kotlin
支持自动类型的推导,可以到达简化代码的作用。
如:val b: String = "Hello Kotlin"
可以直接写成val b = "Hello Kotlin"
。 -
Kotlin
与Java
声明变量对比
Kotlin
声明变量:var a: Int = 2 val b: String = "Hello Kotlin"
Java
声明变量:int a = 2; final String b = "Hello Java";
三、易混淆的Long类型标记
在Java
里,开发者在代码中通过以下方式进行Long
类型的声明:
long a = 12345678910l;// 小写易混淆
long b = 12345678910L;// 大写方便识别
在Kotlin
中,声明Long
类型变量时,不支持小写L进行类型声明,否则编译器会报错
val c = 12345678910L
四、Kotlin
的数值类型转换
在Java
中,我们可以通过隐式转换的方式进行数值类型的转换,示例如下:
int e = 10;
long f = e;// implicit conversion
在Kotlin
中,这种行为是不被允许的,这也是争议比较大的一点(支持者认为隐式转换安全性存在问题,反对者认为去除隐式转换给开发者带来一些开发过程中的麻烦),示例代码如下:
val e: Int = 10
val f: Long = e.toLong()
五、无符号类型(v1.3)
Kotlin
在兼容C
时,创造了与之对应的无符号类型,具体如下:
有符号类型 | 无符号类型 | |
---|---|---|
字节 | Byte | UByte |
短整型 | Short | UShort |
整型 | Int | UInt |
长整型 | Long | ULong |
字符串 | String | String |
无符号类型声明变量示例:
val ua: UInt = 10u
val ub: ULong = 12345678910u
val uc: UByte = 1u
六、Kotlin
中的变量值比较
kotlin
中的值比较通过==
操作符来进行,这个有异于Java
(Java
中是通过equals
方法进行值比较,==
比较的是变量引用)。
示例:
val k = "Hello Kotlin"
val m = String("Hello Kotlin".toCharArray())
println(k === m) // compare references-比较引用
println(k==m) // compare values-比较值
而Java
中则是以下形式:
String k = "Hello Kotlin";
String m = new String("Hello Kotlin");
System.out.println(k==m);// compare references-比较引用
System.out.println(k.equals(m));// compare values-比较值
七、Kotlin
中的字符串
- 字符串比较
- a == b :比较内容,等价于
Java
的equals
。 - a === b :比较对象是否是同一个对象。
- a == b :比较内容,等价于
- 字符串模板
- “Hello,$name”=>"Hello,小明"