Kotlin基础语法总结,快速熟悉,上手开发

先熟悉一下基本数据类型

类型 位宽度
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

1、类和属性的定义

/**
 * 类的定义及属性
 */
open class A {
    lateinit var name : String
    var age : Int = 0
    var gender : Int = 0

    fun setInterface(i : I){

    }
}

    //定义int的方式一
    var a : Int = 0
    //定义int的方式二,同一
    var b = 0
    //定义一个字符串
    var s = "ssssss"
    //定义String,lateinit关键字 可以不初始化,但在使用前必须初始化,否则会空指针
    lateinit var c : String
    //加个问号,表名这个属性可以为空,在使用时需要在属性名后加双感叹号,表示属性不为空时调用方法,   如:d!!.toString()
    var d : String? = null

2、方法定义

    /**
     * 无参方法定义
     */
    fun main(){

    }

    /**
     * 有参方法定义
     * args String数组定义
     */
    fun main(args: Array) {

    }
    /**
     * 有返回值方法定义
     * 返回字符串
     */
    fun mains(): String {

        return ""
    }

     /**
     * 有默认参数方法的定义
     */
    fun print(s : String = "没有内容"){
        
    }

    //调用
        //不传参数,则s = "没有内容"
        print()
        //传参,则s = "我是内容"
        print("我是内容")

3、部分具体语法

        //list基本语法
        val list = ArrayList()
        list.add("")
        val s = list[0]
        val size = list.size
        //list遍历
        for(i in list.indices){
            val s = list[i]
        }
        list.forEach {
            val s = it
        }

        //普通循环
        for(i in 0..9){

        }

        //switch...case..
        var key = 1
        when(key){
            0->{

            }
            1->{

            }
            else->{

            }

        }

         var a = 1
        //类似三目运算符,kotlin没有三目
        var b = if (a > 0) 1 else 2

        //类型转换 
        //toByte(): Byte
        //toShort(): Short
        //toInt(): Int
        //toLong(): Long
        //toFloat(): Float
        //toDouble(): Double
        //toChar(): Char
        val b: Byte = 1 // OK, 字面值是静态检测的
        val i: Int = b.toInt() // OK

4、接口的定义

/**
 * 接口定义
 */
interface I {
    fun a(string: String?)
}
        var a = A()
        a.setInterface(object : I{
            override fun a(string: String?) {

            }
        })

5、继承和实现

/**
 * 实现接口
 */
internal class Child : I {

    override fun a(string: String?) {

    }
}

/**
 * 类的继承,接口实现
 */
class B : A(),I{
    override fun a(string: String?) {

    }
}

class C : View {
    constructor(context: Context) : super(context) {}

    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {}

    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {}
}

6、工具类定义(类似静态方法)

/**
 * 工具类,类似静态方法
 */
object Utils {
    fun eat() {

    }
}

         //静态方法调用
        Utils.eat()

7、类的操作

//类的声明及属性的操作
        var xiaoming  = A()
        xiaoming.age = 12
        xiaoming.name = "xiaoming"
        xiaoming.gender = 0

        var age = xiaoming.age
        var name = xiaoming.name

8、扩展函数

扩展函数可以在已有类中添加新的方法,不会对原类做修改,定义一个*.kt文件,如:在MainActivity中添加一个log()方法,内容如下:

fun  MainActivity.log() {

}

这个很好用,例如log之类的,或者某些类专用且子类通用的方法。上面的定义只有在MainActivity及子类中可以调用到log方法

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //inline文件中声明的扩展方法
        log()
    }
}

9、view的操作

MainActivity的布局中有一个TextView id=tv

activity中不用findViewById,也不用声明view的名称,只需要导入这个布局,就可以直接拿到id对象

import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //setText
        tv.text = "abcd"
    }
}

监听方法,以下两种写法是一样的

        tv.setOnClickListener(object : View.OnClickListener{
            override fun onClick(view: View?) {
                view.setBackgroundColor(Color.BLACK)
            }
        })


        tv.setOnClickListener {
            //上面的view在这里是 it
            it.setBackgroundColor(Color.BLACK)
        }

 

你可能感兴趣的:(kotlin)