Kotlin入门和常用简易示例

定义变量

    //延迟初始化,但是必须尽快初始化,且不为空
    private lateinit var mView: View
 
    fun test() {
        //可变变量
        var varInt: Int = 1
        var varInt1 = 2
        var varString = "123"
        //不可变变量
        val valInt: Int = 1
        val valInt01 = 1
    }
 
    //匿名内部类
    val runnable: Runnable = object : Runnable {
        override fun run() {
        }
    }
 
 
函数
//默认返回Unit,如函数test1()
    fun function() {
    }
 
    fun function1(): Unit {
    }
 
    //返回Int
    fun function2(number1: Int, number2: Int): Int {
        return number1 + number2
    }
 
    //返回Int
    fun function3(number1: Int, number2: Int) = number1 + number2
 
    //可变参数
    fun function4(vararg value:Int) {}
 
 
常见操作符
    fun test() {
        //可扩展:*
        //*Array 把数组转变成可变参数
 
        //可为NULL性:?(变量为空不会报错)
        callback?.onCallback()
 
        //指向运算符:-> 指向执行区域
        when (2) {
            1 -> {}
            2 -> {}
            else -> {}
        }
 
        //忽略可为NULL性:!!(变量为空则报错,同Java)
        var callback = null
        callback?.onCallback()
 
        //?:类似Java三元运算符
        var string:String? = null
        print(string?.toString() ?: "empty")
 
        //
        //
    }
 
 
 
 
打印和拼接字符串
    fun test() {
        val age = 1
        val name = "tom"
        val sex = "Man"
        print("age:$age name:$name sex:$sex")
        print("age:${age + age}")
        //打印时换行操作
        //存在前置空格
        val info1 = """
            line1
            line2
        """
        //自动去掉前置空格
        val info2 = """
            line1
            line2
        """.trimIndent()
        //自动去掉前面指定的标记内容@,默认时|
        val info3 = """
            @line1
            @line2
        """.trimMargin("@")
        //其他
        val ticket = """
            ${'$'}9999.99
        """.trimIndent()
    }
 
 
 
 
区间:in/ in downto/ step /in until
    fun test() {
        //1到9 默认加1
        for (i in 1..10) {
        }
        //不会输出结果
        for (i in 10..1) {
        }
        //大到小   10到1
        for (i in 10 downTo 1) {
        }
        //区间做判断
        var i = 5
        if (i in 1..9) {
        }
        //步长指定
        for (i in 1..30 step 3) {
        }
        for (i in 30 downTo 1 step -3) {
        }
        //0-9,不包含最后的值10
        for (i in 0 until 10) {
        }
    }
 
 
比较:==和===
    fun test() {
        var value1 = 10
        var value2 = 10
        //比较值
        println(value1 == value2)
        //比较对象地址
        println(value1 === value2)
    }
 
 
数组
    fun test() {
        //创建数组
        val member = arrayOf(1, 2, 3)//生成Array
        val memberEmpty = arrayOfNulls<Any>(3)
        val memberList = arrayListOf<Any>(3)//ArrayList
        val member1 = Array(5, { value -> (value + 10) })//10..14 value 默认为0
        val member1Lambda = Array(5) { value -> (value + 10) }//10..14。->指向运算符,每个value都指向value+10
    }
 
 
循环
使用when替代if、swith
    fun test() {
        when (5) {
            1 -> {}
            2 -> {}
            else -> {}
        }
        when (5) {
            in 1..4 -> {}
            in 5..7 -> {}
            else -> {}
        }
        val result = when (5) {
            in 1..4 -> {
                //start
                ....
                //end
                false
            }
            in 5..7 -> {
                //start
                ....
                //end
                true
            }
            else -> {
                "其他"
            }
        }
    }
 
 
自定义View:可以把参数最多的构造放在类后面。(类位置的构造是该类最重要的构造函数)
class NoteRecyclerView constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) :
    RecyclerView(context, attrs, defStyleAttr),TextWatcher, View.OnClickListener {
    constructor(context: Context) : this(context, null)
    constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
    init {
 
    }
 
    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
    }
 
    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
    }
 
    override fun afterTextChanged(s: Editable?) {
    }
 
    override fun onClick(v: View?) {
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值