一、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,小明"