众所周知,Kotlin出来已经良久了。虽然说能够在Android和java开发中,缩减很大的代码量。但是很多的开发者已经习惯于使用它的老大哥们,所以说,尽管Kotlin拥有着众多优势,但是从推出开始,总是不温不火。直到2019年05月08日,谷歌在当日举行的 I/O 大会上宣布,Kotlin 编程语言是 Android 应用程序开发人员的首选语言。经过这次大会以后,Kotlin终于还是扬眉吐气了一把。
作为一枚从事安卓的小程序猿,在我学习的时候同时分享出来,也是希望大家能够一同进步。再不济也能推广一下嘛对吧。
一 基本数据类型
1.1 基本类型的变量声明
kotlin变量的声明方式与Java中声明变量有很大的区别,和前端反而有相似之处。使用var或val关键字来修饰。其中:
var: 用此关键字声明的变量表示可变变量,即可读且可写。相当于Java中普通变量
val: 用此关键字声明的变量表示不可变变量,即可读且不可写。相当于Java中用final修饰的变量
定义格式: 关键字 变量名: 数据类型 = xxx (var i: Int = 10)
Kotlin的 “变量名: 数据类型”格式声明,不是常见的“数据类型 变量名”的这种格式;至于后面的分号,则看代码行后面是否还有其他语句,如果变量声明完毕直接回车换行,那么后面无需带分号;如果没有回车换行,而是添加其他语句,那么变量声明语句需要带上分号。
例:
//立即初始化
var var_a: Int = 10
//后面推导出类型
var var_b = 5
//没有回车换行,添加其他语句,需要增加分号
var var_c = 5.20 ; var var_d = 100
println("var_a => $var_a \t var_b => $var_b \t var_c => $var_c \t var_d => $var_d")
fun funA () {
var_a = 100
println("var_a => $var_a \t var_b => $var_b \t var_c => $var_c \t var_d => $var_d")
}
打印结果为:
var_a => 10 var_b => 5 var_c => 5.20 var_d => 100
var_a => 100 var_b => 5 var_c => 5.20 var_d => 100
//立即初始化
val val_a: Int = 100
//同上
val val_b = 50.0
fun funA () {
// val_a= 200 这句会报错,因为修饰val_a的是val关键字,是不能修改的
}
println("val_a => $val_a \t val_b => $val_b")
打印结果为:
val_a => 10 val_b => 50.0
1.2 简单变量之间的转换
Kotlin不允许用java的前缀表达式进行强制转换类型,只能调用类型转换函数输出其他类型的变量。如下图所示
Kotlin的数据类型转换函数 | java转换表达式 | 转换函数说明 |
---|---|---|
toInt() | (int) | 转换为整数 |
toLong() | (long) | 转换为长整数 |
toFloat() | (float) | 转换为浮点数 |
toDouble() | (double) | 转换为双精度 |
toChar() | (char) | 转换为字符 |
toString() | + “”/数据类型封装类.toString(数据类型)/其他 | 转换为字符串 |
var i = 100.0
var toInt = i.toInt()
var toLong = i.toLong()
var toFloat = i.toFloat()
var toDouble = i.toDouble()
var toChar = i.toChar()
var toString = i.toString()
println("toInt => $toInt \n toLong=> $toLong \n toFloat => $toFloat \n toDouble => $toDouble \n toChar => $toChar \n toString => $toString ")
打印结果为:
toInt => 100
toLong=> 100
toFloat => 100.0
toDouble => 100.0
toChar => d
toString => 100.0
二 数组
2.1 数组变量的声明
先分别用一组整型数组进行对比
java : int[ ] int_array = new int[ ] {1, 2, 3};
kotlin : var int_array:IntArray = intArrayOf(1, 2, 3)
两者对比,有如下区别
- Kolin提供了新的整型数组类型(IntArray)
- 分配一个常量数组,Kotlin调用的是intArrayOf方法,并不使用New关键字
其他的类型如下
Kotlin的基本数组类型 | 数组类型的名称 | 数组类型的初始化方法 |
---|---|---|
整型数组 | IntArray | intArrayOf |
长整型数组 | LongArray | longArrayOf |
浮点数组 | FloatArray | floatArrayOf |
双精度数组 | DoubleIntArray | doubleArrayOf |
字符数组 | CharArray | charArrayOf |
布尔型数组 | BooleanArray | booleanArrayOf |
数组举例
var longArray: LongArray = longArrayOf(1, 2, 3)
var floatArray: FloatArray = floatArrayOf(1.0f, 2.0f, 3.0f)
var doubleArray: DoubleArray = doubleArrayOf(1.0, 2.0, 3.0)
var booleanArray: BooleanArray = booleanArrayOf(true, false, true)
var charArray: CharArray = charArrayOf('a', 'b', 'c')
当然,还有一种方式也能快速进行数组的创建
var int_array:Array<Int> = arrayOf(1, 2, 3)
var long_array:Array<Long> = arrayOf(1, 2, 3)
var float_array:Array<Float> = arrayOf(1.0f, 2.0f, 3.0f)
var double_array:Array<Double> = arrayOf(1.0, 2.0, 3.0)
var boolean_array:Array<Boolean> = arrayOf(true, false, true)
var char_array:Array<Char> = arrayOf('a', 'b', 'c')
String是一种特殊的基本数据类型,在Kotlin中可以使用如下方式进行实现
var string_array:Array<String> = arrayOf("hello", "kotlin")
2.2 数组元素的操作
数组元素常见的处理包括获取数组长度、获取指定位置的数组元素等,和java的区别包括
- 获取数组长度,java使用.length,而Kotlin使用.size
- 获取指定位置的数组元素,Kotlin新增get和set两个方法,通过get方法获取元素值,通过set方法设定元素值
举例如下:
var intArray:Array<Int> = arrayOf(1, 2, 3)
val size = intArray.size//得到数组数量
val i = intArray[1]
val get = intArray.get(1) // 等同于intArray[1]
intArray.set(1,222) // 等同于intArray[1] = 222
三 字符串
3.1 字符串与基本类型的转换
字符串转换目标 | Kotlin转换方式 | java转换方式 |
---|---|---|
整型 | 字符串变量的toInt方法 | Integer.parseInt |
长整型 | 字符串变量的toLong方法 | Long.parseLong |
浮点数 | 字符串变量的toFloa方法 | Float.parseFloat |
双精度数 | 字符串变量的toDouble方法 | Double.parseDouble |
字符数 | 字符串变量的toChar方法 | Char.parseChar |
布尔型数 | 字符串变量的toBoolean方法 | Boolean.parseBoolean |
3.2 字符串的常用方法
var s:String = "hello kotlin"
//基本用法和java类似
val indexOf:Int = s.indexOf("k")
val substring:String = s.substring(0, 5)
val replace:String = s.replace("hello", "nihao")
//在java中返回的是数组,在kotlin返回的是队列
val split:List<String> = s.split("k")
//kotlin允许直接通过下标访问字符串指定位置的字符
val toString:String = s[1].toString()
val toString1:String = s.get(1).toString();
3.3 字符串的模板及拼接
-
区别于java,Kotlin的字符串拼接是直接在字符串中使用“$变量名”来引用变量的值
用法如下
var s:String = "hello kotlin"
println("字符串的内容是 $s")
-
如果是在字符串中调用相关方法,就需要用{}将运算表达式给包裹起来
用法如下
var s:String = "hello kotlin"
println("字符串的长度是 ${s.length}")
-
如果类似是美元符号$这样的特殊字符,则不能直接打印,需要进行转义才能进行打印,可以通过表达式内层的{’’}进行打印
用法如下
var s:String = "5"
println("这个苹果的价格是${'$'} $s")
先介绍到这里,如果有问题,希望大家能够指出来,我必定会马上修改。感谢!