精华内容
下载资源
问答
  • Kotlin入门

    2017-06-10 08:40:30
    Kotlin入门
  • Kotlin 入门

    2018-11-09 16:05:33
    1、引入Kotlin 1、新项目引入 在新建项目的时候勾选Include Kotlin support,如下图 2、现有项目引入 Tools->Kotlin->Configure Kotlin in Project 不管如何引入的本质上都是在build.gradle上引用: ...

    1、引入Kotlin

    1、新项目引入

    在新建项目的时候勾选Include Kotlin support,如下图
    在新建项目的时候勾选Include Kotlin support

    2、现有项目引入

    Tools->Kotlin->Configure Kotlin in Project

    不管如何引入的本质上都是在build.gradle上引用:
    project build.gradle:
    在这里插入图片描述

    在app或者module的build.gradle:
    在这里插入图片描述
    kotlin-android-extensions 可以让我们不在写findviewbyid,后面会详细介绍。

    2、基本语法

    1、定义属性

    Kotlin中定义属性只有2个关键字:var和val
    var:可变变量
    val:只读变量

    	var name:String = "qwe" //对应Java String name = "qwe";
        var age = 12 //对应Java int age = 12,如果不指定kotlin根据值进行推断
        var a:String //编译不过去,Kotlin 定义属性的时候必须初始化或者使用lateinit
        lateinit var a1:String
        var b:String = null  //编译不过去,属性类型如果不加?则代表此属性不能null
        var c:String? = null
        
        val d = 0 //只读变量
        d = 1 //编译不过去
    

    这些是最基本的,也是我们常用的,当然还有很多细节后面详细说明。

    2、定义函数、方法

    
        fun add(a:Int,b:Int):Int{
            return 0
        }
    
        override fun equals(other: Any?): Boolean {
            return super.equals(other)
        }
    

    fun:定义方法的关键字
    add:方法名
    括号内:方法参数,注意参数的类型要放在参数后面,以“:”连接
    括号后面接:Int:是返回的类型,如果无返回值可以不写。
    override:重写父类方法

    对应Java写法:

    	int add(int a,int b){
            return 0;
        }
    
        @Override
        public boolean equals(Object obj) {
            return super.equals(obj);
        }
    

    3 定义class

    open class Person constructor(var name:String,var age:Int =1) {
    
        init {
            //初始化的时候调用
        }
    
        /**
         * 次构造函数
         * this:必须
         */
        constructor(name: String):this(name,10){
    
        }
        constructor(name: String,age: Int,sex:String):this(name){
    
        }
    }
    
    class Student(name: String) : Person(name) {
    
        constructor(name: String, age: Int) : this(name) {
    
        }
    }
    
        var person = Person("qw")
        var person1 = Person("q",12)
    

    1、定义类的关键字是:class
    2、Kotlin的类默认是final,也就是不可被继承,如果想被继承则需要在class前加open关键字。
    3、类名后面的constructor()是主构造函数,正常情况下constructor可以省略,但如果在构造函数上有注解则不可省略,比如dagger框架

    class DataManager @Inject constructor(){}
    

    4、主构造函数中的参数不需要写get/set方法,访问的时候可以直接这样写:

    		var age = person.age //get
            person.age = 100 //set
    

    5、参数可以有默认值,如age
    6、init{} 在初始化的时候调用。
    7、次构造函数在类体内,并且必须直接或者间接委托主构造函数(this)
    8、实例化:不需要new 关键字
    9、类的继承(extends)和实现(implements)用 : 代替
    10、注意init{}在次构造函数前执行
    11、如果没有定义任何主构造函数和次构造函数,系统默认生成一个无参的主构造函数,而且是public的,如果不想要无参构造函数可以这样:

    class DontCreateMe private constructor ()
    

    12、构造函数函数可以用默认值,如果所有的参数都有默认值,系统将会生成一个无参的构造函数,参数使用默认值

    4、常用的循环控制语句

    1、if…else

    1、Kotlin中的if…else和Java一样,在Kotin中if…else可以当作表达式

    val max = if (a > b) a else b
    

    2、when

    	when (x) {
                1 -> print("x == 1")
                2 -> print("x == 2")
                else -> { // Note the block
                    print("x is neither 1 nor 2")
                }
            }
    
    	when (x) {
                in 1..10 -> print("x is in the range") // .. 表示 [1,10] until:[1,10)
                !in 10..20 -> print("x is outside the range")
                else -> print("none of the above")
            }
    

    1、when替代Java中的switch,但是比Java中更加强大
    2、上面的代码中有in(在范围内),… 表示 [1,10] until:[1,10),这些后面详细介绍

    3、for

    		for (i in 1..3) {
                println(i)
            }
            for (i in 1 until 3) {
                println(i)
            }
            for (i in 6 downTo 0 step 2) {
                println(i)
            }
    
            val list = arrayListOf<Int>()
            for (i in list){
    
            }
            val map = mapOf<String,String>()
            for ((key,value) in map){
            }
    

    1、for循环提供了list、map等的遍历
    2、… 表示 [1,10]
    3、until:[1,10)
    4、downTo :减
    5、step:步幅,实例中表示每次-2
    6、对于map可以直接使用解构遍历,解构的用法不仅仅用在遍历,后面会详细介绍。

    4、while do…while return 等

    这些基本和Java一样,不在介绍。

    5、基本类型

    这些类型和Java基本一样,但Kotlin没有隐式转换

    1、数字类型Double、Float、Long、Int、Short、Byte

    		 var a: Float = 1.0F
            //a = 1 //不可以隐式转换,编译报错
            a = 1.0.toFloat() //可以显示转换
    		
    		var b = 123L //L 表示Long类型
            var c = 0x12 //16进制
            var d = 1f
            var e = 1F //f、F表示Float
    
    		var a1 = 1_000_000 //可以使用下划线是数字更具可读性
    

    1、Kotlin 不支持8进制
    2、Kotlin 不可以隐式转换
    3、可以使用下划线是数字更具可读性

    2、String

    String最终常用的字符串模版:

    var s = "$key,${key.toUpperCase()}abc"
    

    替换Java中String类型相加。
    1、字符串模版:${}
    2、如果后面只有一个简单的属性名可以省略大括号

    5访问权限修饰符 private、protected、internal、public

    这些基本和Java一样,不在介绍。

    6 常用的集合

    	var array :Array<String> = arrayOf()
        var array1 :IntArray = IntArray(10)
        var array2 :ArrayList<String> = arrayListOf()
        var map:Map<String,String> = mapOf<String,String>()
        var map1:HashMap<String,String> = hashMapOf()
    

    1、注意初始化的方式比Java方便。

    3 遇到不知道怎么写的怎么办?终极大法

    先用java写好,然后Code->Convert Java File to Kotlin File,转过来后记住这种写法,下次就会了。

    我们写好了Kotlin code后想看看Kotlin对应的Java写法:
    选中Kotlin文件->Tools->Show Kotlin Bytecode:
    在这里插入图片描述

    点击Decompile:
    在这里插入图片描述
    这样更加有助于我们学习。

    Kotlin的学习资料:https://blog.csdn.net/mengks1987/article/details/78051857

    展开全文
  • kotlin入门

    2021-09-02 10:23:50
    https://blog.csdn.net/haodawang/article/details/78729962
    展开全文
  • kotlin入门教程

    2018-01-05 16:12:13
    kotlin入门教程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,811
精华内容 5,124
关键字:

kotlin入门