基本数据类型

image.png

能用val就用val

  1. //可变
  2. var a: Int = 10
  3. //不可变
  4. val b = a + 10
  5. val hashCode = b.hashCode()
  6. 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)