基本数据类型
能用val就用val
//可变
var a: Int = 10
//不可变
val b = a + 10
val hashCode = b.hashCode()
println(hashCode)
类型转换
i = s.toInt()
字符串
- 字符串定义
- 普通字符串:”hello”
- 原样输出字符串: “””hello”””
- 字符串删除空格
trim()
和trimMargin()
- 字符串比较
equals
==
和===
- 字符串切割split和多条件
val trim = " aaa ".trimIndent()
println("---" + trim + "---") //---aaa ---
val trim = """
/a
/b
/c
""".trimMargin("/")
/**
a
b
c
*/
println(trim)
元组
给多个变量同时赋值
- 二元元组Pair
- 三元元组Triple
val (s, i) = Pair<String, Int>("张三", 20)
println(s)
println(i)
val pair = Pair<String, Int>("张三", 21)
println(pair.first)
println(pair.second)
val pair1 = "张三" to 22
println(pair1.first)
println(pair1.second)
空值处理
?可空变量类型
val a:Int? = null
!!非空断言,不要检查我一定不为空
如果是空会报空指针异常
var age:String = null!!
- ?.空安全调用符
age?.toInt()
?:Elvis操作符
如果是空的话就是10
var ageInt:Int = age?.toInt()?:10
字符串模板
fun main(args: Array<String>) {
println(createDiary("abc"))
}
fun createDiary(place: String):String {
return "---1--${sayHello()}---${place}---${place.length}"
}
fun sayHello(): String {
return "hello"
}
for循环
- 普通的for循环
for (c in s ) {
println("c=$c")
}
- 加上index角标的for循环
for ((index, c) in s.withIndex()) {
println("index=$index c=$c")
}
foreach
普通foreach
s.forEach {
println("it=$it")
}
加上index角标的foreach
s.forEachIndexed { index, c ->
println("$c 的角标是$index")
}
数组
val arr = arrayOf("张三","李四","王五")
//10 20 30
val arr1 = arrayOf(10,20,30)
//a b c
val arr2 = arrayOf('a','b','c')
//"张三" 10 'a'
val arr3 = arrayOf("张三",10,'a')
val arr4 = IntArray(10)//new int[10]
val arr5 = IntArray(10){//把数组里面每一个元素都初始化为30
30
}
// BooleanArray
// ByteArray
// ShortArray
// CharArray
// FloatArray
// DoubleArray
// LongArray
// StringArray//不能用
元素修改
val array = arrayOf(1,2,3,4,5)
//把3修改成9
array[2] = 6
array.set(2,9)
下标查找
val array = arrayOf("张三","李四","张四","王五","张三","赵六")
//查找第一个”张三”角标
//返回第一对应的元素角标 如果没有找到返回-1
val index1 = array.indexOf("张三")
println(index1)
//查找最后一个”张三”角标
//找不到 返回-1
val index2 = array.lastIndexOf("张三")
println(index2)
/*---------------------------- 高阶函数实现 ----------------------------*/
//查找第一个姓”张”的人的角标
// val index3 = array.indexOfFirst {
// it.startsWith("张")
// }
// println(index3)
//查找最后一个姓”张”的人的角标
val index4 = array.indexOfLast { it.startsWith("张") }
println(index4)
val index5 = array.indexOfFirst { it=="张三" }
println(index5)