Kotlin基础知识(一)

函数定义

关键字:fun

  • 指定返回类型:fun sum(a : Int,b : Int): Int{ return a+b}
  • 不指定返回类型:fun sum2(a:Int,b: Int) = a+b
  • 无返回类型:fun sum4(a:Int,b: Int) { println(a+b)}
  • 多个参数
   fun varargsum(vararg va : Int): Int { 
       var result = 0   
       for (v in va) {  
          result += v  
       }    
       return result
   }

-匿名函数(Lambda):var sumLambda:(Int,Int) -> Int = {x,y -> x+y}

常量&变量定义

变量关键字:var ( 值可变)

  • 简单定义:var name : type = value -> var a : Int = 0
  • var b = 5

常量关键字:val (定义后不能重新赋值)

  • 简单定义:val name : type = value -> var a : Int = 0
  • 直接定义:val a = 1 (自动识别类型)
  • 先定义再赋值: val a : Int // a = 0

字符串

var a = 1
var s1 = “num is $a” => num is 1
var s2 = “${s1.substring(0,3)},substring 3” => num,substring 3

Null 检查机制

var age: String? = "23"   //类型后面加?表示可为空
val ages = age!!.toInt()  //抛出空指针异常
val ages1 = age?.toInt()     //不做处理返回 null
val ages2 = age?.toInt() ?: -1 //age为空返回-1

当一个引用可能为 null 值时, 对应的类型声明必须明确地标记为可为 null。当 str 中的字符串内容不是一个整数时, 返回 null:

fun parseInt(str: String): Int? {
     // ...
  }
  
  ******************************
  
  val x = parseInt(args[0])
  val y = parseInt(args[1])
  // 直接使用 `x * y` 会导致错误, 因为它们可能为 null.
  if (x != null && y != null) {
    // 在进行过 null 值检查之后, x 和 y 的类型会被自动转换为非 null 变量
    print(x * y)
  }

类型检测及自动类型转换

关键字: is 类似于instanceof
Any 类比于 Object 类 但是并不一样

if (obj is String) {
    // 做过类型判断以后,obj会被系统自动转换为String类型
    return obj.length 
  }
  
  
fun getStringLength(obj: Any): Int? {
  if (obj !is String)
    return null
  // 在这个分支中, `obj` 的类型会被自动转换为 `String`
  return obj.length
}


fun getStringLength(obj: Any): Int? {
      // 在 `&&` 运算符的右侧, `obj` 的类型会被自动转换为 `String`
      if (obj is String && obj.length > 0)
        return obj.length
      return null
  }

区间

  • 区间:关键字 : ..
  • 跳过多少项:关键字:step (原本是1步,step 2 意思就是中间隔一个)
  • 从高到低:关键字downTo
for(i in 1..4) print(" $i")    //输出 1 2 3 4

for(i in 1..8 step 2) print(" $i")   //输出  1 3 5 7

for (i in 4 downTo 1 ) print("  $i")  //输出 4 3 2 1

for (i in 8 downTo 1 step 2)  //输出 8 6 4 2

一个对象实例调用多个方法(with)

关键字:with

val mString = "abc"
with(mString){    
    println(length)          // 3    
    println(subSequence(0,2)) // ab
}

交换两个值

var a = 1
var b = 2
a = b.also { b = a }

可空布尔值

val b: Boolean? = ……
if (b == true) {
    ……
} else {
    // `b` 是 false 或者 null
}

学习资料

菜鸟教程: https://www.runoob.com/kotlin/kotlin-basic-syntax.html

发布了27 篇原创文章 · 获赞 6 · 访问量 1665

猜你喜欢

转载自blog.csdn.net/weixin_41802023/article/details/99658777