<font face= 黑体>咱们来看一下 Kotlin 的基本类型与 Java 的区别,具体以下表所示:java
Kotlin | Java | |
---|---|---|
字节 | Byte | byte/Byte |
整型 | Int & Long | int/Integer & long/Long |
浮点型 | Float & Double | float/Float & double/Double |
字符 | Char | char/Character |
字符串 | String | String |
<font face= 黑体>Kotlin 声明变量的具体形式以下所示:git
int a = 2; final String b = "Hello Java";
var a: Int = 2 val b: String = "Hello Kotlin"
<font face= 黑体>编译器是能够类型推导的,因此上述 Koltin 代码也能够简化成如下这样:github
var a = 2 val b = "Hello Kotlin"
// Java long a = 12345678910l; // 小写l ok but not good long b = 12345678910L; // 大写L ok // Kotin val a = 12345678910l; // 小写l compile error(编译报错) val b = 12345678910L; // 大写L ok
<font face= 黑体>在 Java 中是支持隐式转换的,可是在 Kotlin 中隐式转换是不被容许的。数组
int e = 10; long f = e; // 隐式转换
<font face= 黑体>Kotlin 中这样写是错误的,以下:框架
val e: Int = 10 val f: Long = e // 是错误的
<font face= 黑体>Kotlin 中正确的写法以下:函数
val e: Int = 10 val f: Long = e.toLong() // ok
val j = "I❤️China" println("Value of String 'j' is: $j") println("Length of String 'j' is: ${j.length}")
<font face= 黑体>在 Java 中 == 比较的是引用而不是内容,equals() 才是比较内容的。可是在 Kotlin 中 == 比较的是内容,=== 比较的是引用。spa
val k = "Today is a sunny day." val m = String("Today is a sunny day.".toCharArray()) println(k === m) // compare references. println(k == m) // compare values.
<font face= 黑体>咱们来看一下 Kotlin 的数组与 Java 的区别,具体以下表所示:(相似的还有 Float、Double ...)3d
Kotlin | Java | |
---|---|---|
整型 | IntArray | int[] |
整型装箱 | Array<Int<Int>> | Integer[] |
字符 | CharArray | char[] |
字符装箱 | Array<Char<Int>> | Character[] |
字符串 | Array<<String<Int>>> | String[] |
Java:code
int[] c = new int[]{1, 2, 3, 4, 5};
Kotlin:blog
val c0 = intArrayOf(1, 2, 3, 4, 5) val c1 = IntArray(5) { it + 1 }
<font face= 黑体>数组的打印能够利用 contentToString() 方法。
val c0 = intArrayOf(1, 2, 3, 4, 5) println(c0.contentToString())
<font face= 黑体>打印结果以下所示:
Java:
int[] c = new int[]{1, 2, 3, 4, 5}; System.out.println(a.length);
Kotlin:
val a = IntArray(5) println(a.size)
Java:
String[] d = new String[]{"Hello", "World"}; d[1] = "Java"; System.out.println(d[0] + ", " + d[1]);
Kotlin:
val d = arrayOf("Hello", "World") d[1] = "Kotlin" println("${d[0]}, ${d[1]}")
Java:
float[] e = new float[]{1, 3, 5, 7}; for (float element : e) { System.out.println(element); }
Kotlin:
val e = floatArrayOf(1f, 3f, 5f, 7f) for (element in e) { println(element) }
val e = floatArrayOf(1f, 3f, 5f, 7f) e.forEach { element -> println(element) }
e.forEach { println(it) }
Java:
for (float element : e) { if(element == 1f){ System.out.println("1f exists in variable 'e'"); break; } }
Kotlin:
if (1f in e) { println("1f exists in variable 'e'") }
<font face= 黑体>在 Java 中是没有区间这个概念的,区间是 Kotlin 特有的。
闭区间:
val intRange = 1..10 // [1, 10] val charRange = 'a'..'z' val longRange = 1L..100L
开区间:(左闭右开)
val intRangeExclusive = 1 until 10 // [1, 10) val charRangeExclusive = 'a' until 'z' val longRangeExclusive = 1L until 100L
倒序闭区间:
val intRangeReverse = 10 downTo 1 // [10, 9, ... , 1] val charRangeReverse = 'z' downTo 'a' val longRangeReverse = 100L downTo 1L
步长区间:
val intRangeWithStep = 1..10 step 2 val charRangeWithStep = 'a'..'z' step 2 val longRangeWithStep = 1L..100L step 5
<font face= 黑体>对于可数的区间如整型区间能够用 joinToString() 方法来打印,可是对于不可数的区间如浮点型区间是没法打印的。
val intRange = 1..10 // [1, 10] val floatRange = 1f .. 2f // [1, 1.1225251564165, 1.7,2 ] 不可数的 println(intRange.joinToString()) // 能够打印出具体的值 println(floatRange.toString()) // 打印出来的是描述
for (element in intRange) { println(element) }
intRange.forEach { println(it) }
if (12 !in intRange) { println("12 not in range 'intRange'") }
val array = intArrayOf(1, 3, 5, 7) for (i in 0 until array.size) { println(array[i]) } // 这个遍历方法等同于上面的 for(i in array.indices){ println(array[i]) }
<font face= 黑体>本篇博客主要讲了 Kotlin 内置类型中的基本类型、数组和区间,下一节咱们讲集合框架、函数。
源码已上传至 github,有须要能够直接下载。