【安卓】Kotlin 学习笔记之内置类型(1)

一、基本类型

1.1、与 Java 对比

<font face= 黑体>我们来看一下 Kotlin 的基本类型与 Java 的区别,具体如下表所示:

KotlinJava
字节Bytebyte/Byte
整型Int & Longint/Integer & long/Long
浮点型Float & Doublefloat/Float & double/Double
字符Charchar/Character
字符串StringString

1.2、声明变量

1.2.1:Kotlin 声明变量

<font face= 黑体>Kotlin 声明变量的具体形式如下所示:
【安卓】Kotlin 学习笔记之内置类型(1)

1.2.2:Kotlin 声明变量与 Java 对比

int a = 2;

final String b = "Hello Java";

var a: Int = 2

val b: String = "Hello Kotlin"

<font face= 黑体>编译器是可以类型推导的,所以上述 Koltin 代码也可以简化成以下这样:

var a = 2

val b = "Hello Kotlin"

1.2.3:易混淆的 Long 类型标记

// 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

1.2.4:Kotlin 的数值类型转换

<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

1.3、字符串模板 $

val j = "I❤️China"

println("Value of String 'j' is: $j")

println("Length of String 'j' is: ${j.length}")

1.4、字符串比较

<font face= 黑体>在 Java 中 == 比较的是引用而不是内容,equals() 才是比较内容的。但是在 Kotlin 中 == 比较的是内容,=== 比较的是引用。

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.

1.5、Kotlin 基本类型小结

【安卓】Kotlin 学习笔记之内置类型(1)

二、数组

2.1、与 Java 对比

<font face= 黑体>我们来看一下 Kotlin 的数组与 Java 的区别,具体如下表所示:(类似的还有 Float、Double ...)

KotlinJava
整型IntArrayint[]
整型装箱Array<Int<Int>>Integer[]
字符CharArraychar[]
字符装箱Array<Char<Int>>Character[]
字符串Array<<String<Int>>>String[]

2.2、数组的创建

Java:

int[] c = new int[]{1, 2, 3, 4, 5};

Kotlin:

val c0 = intArrayOf(1, 2, 3, 4, 5)

val c1 = IntArray(5) {

it + 1

}

2.3、数组的打印

<font face= 黑体>数组的打印可以利用 contentToString() 方法。

val c0 = intArrayOf(1, 2, 3, 4, 5)

println(c0.contentToString())

<font face= 黑体>打印结果如下所示:
【安卓】Kotlin 学习笔记之内置类型(1)

2.4、数组的长度

Java:

int[] c = new int[]{1, 2, 3, 4, 5};

System.out.println(a.length);

Kotlin:

val a = IntArray(5)

println(a.size)

2.5、数组的读写

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]}")

2.6、数组的遍历

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)

}

2.7、判断元素是否在数组里面

Java:

for (float element : e) {

if(element == 1f){

System.out.println("1f exists in variable 'e'");![在这里插入图片描述](https://img-blog.csdnimg.cn/20210103151810961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODQ3ODc4MA==,size_16,color_FFFFFF,t_70#pic_center)

break;

}

}

Kotlin:

if (1f in e) {

println("1f exists in variable 'e'")

}

2.8、Kotlin 数组小结

【安卓】Kotlin 学习笔记之内置类型(1)

三、区间

<font face= 黑体>在 Java 中是没有区间这个概念的,区间是 Kotlin 特有的。

3.1、区间的创建

闭区间:

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

3.2、区间的打印

<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()) // 打印出来的是描述

3.3、区间的遍历

for (element in intRange) {

println(element)

}

intRange.forEach {

println(it)

}

3.4、区间的包含关系

if (12 !in intRange) {

println("12 not in range 'intRange'")

}

3.5、区间的应用

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])

}

3.6、Kotlin 区间小结

【安卓】Kotlin 学习笔记之内置类型(1)

四、小结

<font face= 黑体>本篇博客主要讲了 Kotlin 内置类型中的基本类型、数组和区间,下一节我们讲集合框架、函数。

五、源码

源码已上传至 github,有需要可以直接下载。

以上是 【安卓】Kotlin 学习笔记之内置类型(1) 的全部内容, 来源链接: utcz.com/a/97695.html

回到顶部