Int,Long,Float,Double,Boolean,Char,String
toInt(),toLong(),toFloat(),toDouble(),toBoolean(),toChar(),toString()
intArrayOf(...),longArrayOf(...),floatArrayOf(...),doubleArrayOf(...),booleanArrayOf(...),charArrayOf(...)
举例说明使用方法
var int_Array:IntArray=intArrayOf(1,2,3)
var long_Array:LongArray=longArrayOf(1,2,3)
var float_Array:FloatArray=floatArrayOf(1f,2f,3f)
var double_Array:DoubleArray=doubleArrayOf(1.0,2.0,3.0)
var boolean_Array:BooleanArray=booleanArrayOf(true,false,true)
var char_Array:CharArray=charArrayOf('a','b','c')
var string_Array=arrayOf("中国","北京","上海")
通过array.size;array.count();
下标形式:修改array[2]=6(将第三个元素修改为6);
方法调用形式:修改array.set(1,8)(将第二个元素修改为8)
下标形式:获取str=array[i]
方法调用形式get:获取array.get(i),获取指定位置的元素
elementAt:获取指定位置的元素
first:获取第一个位置元素
last:获取最后一个元素
getOrNull:获取指定位置的元素,如果没有获取成功会返回null,避免数组越界
contains方法判断集合中是否包含某个元素,返回值为布尔
indexOf获取元素对应的位置,如果数组中不存在即返回-1
reverse将数组元素倒序排列
for循环
val i:Int=0
for (i in array){
println(i)
}
迭代器
val iterator=array.iterator();
for (item in iterator.iterator()){
println(item)
}
while循环
var str:String=""
var i:Int=0
while (i
转整型toInt;转长整型toLong;转浮点型toFloat;转双精度型toDouble;转布尔toBoolean;转字符型toChar;
注意:int和long的转换时带小数点的数值转换时肯定会报错,转换时必须转换成只有数字
获取元素索引:indexOf
截取:substring(开始位置,结束)
替换:replace("替换前",“替换后")
分割:split(分割字符) Java中 split()返回的是一个String[], 而 kotlin中返回的是一个 List
获取指定位置得字符:get(),str[i]
占位符${...}
举例:val str="用户的昵称是${user.name}"
val str2="str的值是$str"
注意:如果在取值之前还要先运算,则需用大括号把运算表达式给括起来
符号$后面跟变量名,系统会自动匹配最长的变量名。比如打印出来的是str2而不是str
方法一:${'$'}
${} 还是字符串占位格式,其中包含的'$'表示 $ 符号
方法二: \$
\表示转义,\$转义后得到 $
分为可变和不可变,可变就是能进行增删改查操作
不可变容器:Set,List,HashMap
可变容器:MutableSet,MutableList,MutableHashMap
kotlin的容器可以再定义的时候进行初始化和定义
初始化函数
listOf(),mutableListOf(),setOf(),mutableSetOf(),hashMapOf(),MutableHashMapOf()
for(user in userSet){ ... }
val iterator=userSet.iterator()
while(iterator.hasNext()){
val user=iterator.next()
... }
userSet.forEache{"用户的姓名为${it.name}"}
除了 for-in 、迭代器、forEach, 还有一种根据索引遍历的方式:
// indices 表示userList的索引数组。这种方式本质上也是采用了for-in, 但遍历的是索引
for(i in userList.indices){
val user=userList[i]
... }
以键值对形式存储数据,键是唯一得
调用 mapOf / mutableMapOf 执行初始化,在组织键值对元素时都有如下两种方式:
键 to 值
val userMap:Map
Pair(键,值
val userMAp2:MutableMap
三种模式:for-in 、 迭代器、 forEach
由于元素是一个键值对,所以,在遍历获取到元素之后可以视需要根据元素取出对应的key 和 value
for(item in userMap){
val str="用户的${item.key} 为 ${item.value}" }
初始化数据 private val newA="java"
private val newB="android"
private val newC="ios"
kotlin中得if/else具有返回值,类似java中得三目运算符
tv_judge_result.text=if (isJudge) newA else newB
也可以如java中一样使用
kotlin中没有switch/case
var num = "0"
tv_judge_result.text = when (num) {
"0" -> newB
"1" -> newA
else -> newC
}
举例
tv_answer.text = when (count) {
1,3,5,7,9 -> "取值为13579中的一个"
in 13..19 -> "取值为13到19中的一个"
!in 6..10 -> "取值不再6到10之间"
else -> "其他值" }
for...in,foreach,迭代器
条件循环--满足某个条件时终止/开始循环
until:for (i in 11 until 66) { }
遍历11到66之间的数值,until 声明了一个左闭右开的区间——不包含66,包含11
setp:for (i in 23..89 step 4) {}
遍历23-89之间的数值,步进为4——每次+4。23..89声明一个左右均闭合的区间
downTo:for (i in 50 downTo 7) { }
倒序遍历从50到7
whlie,do/while:复杂逻辑使用,用法跟java类似
基本用法跟java类似,当嵌套循环时,还可以通过 @循环标签名 指定要中断的循环
{var i:Int = 0
var is_found = false
// outsize@ 表示为外层循环添加标签,名称为 outside
outside@ while (i < poemArray.size) {
var j:Int = 0
var item = poemArray[i];
while ( j < item.length) {
if (item[j] == '一') {
is_found = true
//中断标签名为outside的循环
break@outside
}
j++
}
i++ }
kotlin默认变量非空,如果需要声明一个可空的变量,则在类型后面加一个?
举例:var str:String?
?--->表示可空,如果空直接返回null
?:--->表示一旦为空则返回冒号后面的值,否则返回正常的值
!!--->表示断言非空(放弃非空判断),但是如果做了这个断言,但依然返回空,就会报空指针
==/!=:判断两个数据是否相等/不等
kotlin中的==跟java中的equals一样
注意:kotlin中比较字符串时不再比较内存中的内存地址,而是直接比较变量值,这种方式叫做结构相等,即模样相同外观相同。
===/!==:引用相等既是判断内存地址是否一样
对于基本数据类型包括String,结构相等和引用相等是一致的
通过clone得到的对象即便属性值一样,但引用地址不一样
is/!is:判断a是否是b的实例,如对象名is类名
in/!in:判断数组中是否包含某个元素,如变量名in数组名