Android:Kotlin语法基础

本文详细介绍了Kotlin编程语言的基础语法,包括主函数、变量、数组、函数、Lambda表达式、运算符、闭包等核心概念。特别讨论了Kotlin中的空值检测、智能类型推测、扩展函数、内部类、单例类以及与Android开发的结合,如view.find、observable和Parcelable的简化使用等特性。
摘要由CSDN通过智能技术生成

主函数

fun main(args: Array<String>){
    println("Hello World")
}

变量

1、常量

val修饰常量,编译器规定常量必须初始化,若不想初始化,可用**by lazy{}**对常量进行懒加载

val a: Int = 1                     // 强类型常量
val b = 2                          // 弱类型常量
const val c = "Hello"              // 编译器常量
val a: String by lazy{"lazy init"} // 懒加载常量

2、变量

var修饰变量,编译器规定变量必须初始化,若不想初始化,可用lateinit关键字限制报错

lateinit var a                       //未初始化变量

var x = 5                            //初始化变量
var x1 = "x is $x"                   //获取变量的值:$变量 
var x2 = "${x1.replace("is","was")}" //内嵌表达式:${表达式}

var str = """                        //段落
    <html>
        <a href="">go</a>
    </html>
"""

3、空值检测

println(value?.size)                //if not null
println(value?.size ?: "empty")     //if not null and else
println(value.firstOrNull() ?: "")  //if not null and get first 
println(values["key"] ?: a + b)     //if not null and else + 表达式
value?.let{ }                       //if not null + 代码块
value!!.let{ }                      //告诉编译器不需要判空

4、字符串比较

==:在kt中相当于java的equals()
===:在kt中相当于java的==

数组

1、定义

//每种基本类型都有对应的数组创建方法,类似于定制版
var array:IntArray = intArrayOf(1,3,5,7)
var array:CharArray = charArrayOf('H','E','L','L','O')
//基于泛性的创建方法,泛型也可省略,类似于通用版
var array:Array<Char> = arrayOf('H','E','L','L','O')

2、数组和字符串转换

//第一种形式
var array:Array<Char> = arrayOf('H','E','L','L','O')
println(array.joinInString(""))
//第二种形式
var array:CharArray = charArrayOf('H','E','L','L','O')
println(String(array))

3、数组遍历

var array:Array<Char> = arrayOf('H','E','L','L','O')
//第一种形式
array.forEach{println(it)}
//第二种形式
array.forEach{::println}
//第三种形式
for((index,value) in array.withIndex()){
    println("$index -> $value")
}

函数

1、有返回值的函数

//第一种形式
fun sum(a: Int, b: Int): Int {return a + b}
//第二种形式
fun sum(a: Int, b: Int) = return a + b
//第三种形式
fun sum(a: Int, b: Int) = a + b

2、无返回值的函数

Unit类型相当于Void类型,Unit返回类型可以省略不写

fun printSum(a: Int, b: Int): Unit { …… }

3、默认参数的函数

fun foo(a: Int = 0, b: String = "") { …… }

4、变长参数的函数

变长参数由vararg关键字决定,数组参数可通过*方式传参,第一个参数可以不使用名字指定,最后个参数必须使用具名参数

fun say(double: Double,vararg ints: Int,string: String) { …… }

val array = intArrayOf(1,3,4,5)
say(2.0,*array,string = "Hi")

5、扩展函数

你可以给父类添加一个方法,这个方法将可以在所有子类中使用

fun Activity.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(this, message, duration).show()
}

6、智能类型推测

判断一个对象是否为一个类的实例,可以使用is关键字与Java中的instanceof关键字类似,但在Kotlin中如果已经确定了一个对象的类型,可以在接下来的代码块中直接作为这个确定类型使用

fun getStringLength(obj: Any): Int? {
  if (obj is String) {return obj.length}   //类型判断后,obj会被系统自动转换为String类型
  if (obj !is String){}                    //同时还可以使用!is,来取反
  return null                              //代码块外部的obj仍然是Any类型的引用
}

7、复合函数

复合函数指的是函数中存在另一个函数,类似于数学的f(g(x))

infix fun <P1,P2,R> Function1<P1,P2>.andThen(function: Function1<P2,R>): Function1<P1,R>{
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值