Kotlin 基础提升一
仅供于作为学习笔记,希望也能够给大家带来帮助,如果存在错误也请大家指正。
1.变量
val va:String = "" //只读变量
var value:Int= 5 //可变变量
var value1 = 5 // 类型推断
var simpleNull:String?=null //可空变量
2.表达式
if…else…
when(…){…}
3.函数
1. 普通具名函数
//缺省值 flag:Boolean = false
//函数, 默认public
private fun doSomething(age:Int, flag:Boolean = false)
: String
{
return "result"
}
2. 特别函数,防止调用 Java 方法关键字冲突
fun `public`(){
println("hahhah")
}
3.匿名函数
//传函数类型参数
fun showOnBoard(goodsName: String, getDiscountWords: (String, Int) -> String) {
val hour = (1..24).shuffled().last()
println(getDiscountWords(goodsName, hour))
}
//声明匿名函数
val blessingFunction:()->String
blessingFunction = {
val holidy = "new year"
"Happy $holidy" //隐式返回
}
4. 函数引用
fun main() {
showonBoard(" paper " ,::getDiscoutWords)
}
private fun getDiscoutWords(goodsName: String, hour: Int) : String{
return "2021 年,双11$goodsName 促销倒计时: $hour 小时"
}
fun showonBoard(goodsName: String, getDiscountWords: (String, Int) -> String) {
val hour = (1..24).shuffled().last()
println(getDiscountWords(goodsName, hour))
}
4.可空变量的操作
1.[ let ] 关键字
let 关键字使用在可空变量,当变量不为 null 时才会运行 let 函数内代码块
var str:String? = "butterfly"
str?.let {
str.capitalize()
}
2.[ !! ] 非空断言操作符
使用非空断言操作符,当调用者为空时会报错并抛出异常
var str:String? = "butterfly"
str!!.capitalize()
3.通过 if…else 进行判断
var str:String? = readLine()
if(str != null)
{
str = str.capitalize()
}else {
println("空")
}
4.空合并操作符
[ ?: ] 操作符的意思是,如果左边结果为 null,就使用右边的结果值 , 与 let 常用于代替 if…else…
println(str ?: "JACK")
var str:String?=""
str = str?.let {it.capitalize() } ?: "butterfly"
5. 异常处理
自定义异常,以及使用 try… catch…
fun main() {
var number:Int? = null
try {
checkOperation(number)
number!!.plus(1)
}catch (e:Exception)
{
println(e)
}
}
fun checkOperation(num:Int?)
{
// num ?: throw UnskilledException()
checkNotNull(num) { "Something is not good" } //先决条件函数,kolin内置函数
}
//自定义异常
class UnskilledException : IllegalArgumentException("操作不当")
字符串的常见操作
1.substring
const val NAME = "Jimmy's friend"
fun main() {
val index = NAME.indexOf("'")
val substring = NAME.substring(0, index) //java 原型操作
val str = NAME.substring(0 until index) // kotlin 新增range 操作
println("$substring $str") //输出结果 Jimmy Jimmy
}
2.split
Split 函数返回List集合数据,List集合支持结构语法特性,允许在一个表达式里给多个变量赋值,结构常用来简化变量的赋值。
val data = NAMES_Arr.split(",")
val (origin,dest,proxy) = NAMES_Arr.split(",")
println("$data , $origin,$dest,$proxy")
//[jack, jacky, kason] , jack,jacky,kason
3.replace
// 替换字符串中的元音字母
val str = "The people's Republic of China."
val replace = str.replace(Regex("[aeiou]")) {
when (it.value) {
"a" -> "8"
"e" -> "6"
"i" -> "9"
"o" -> "1"
"u" -> "3"
else -> it.value
}
}
6.安全转换
val num1 : Int? = "8.98".toIntOrNull()
val num2 : Double? = "8.98".toDoubleOrNull()
println(num1) //null
println(num2) //8.98
val s = "%.2f".format(8.956)
println(s) //8.96