为什么要学Kotlin
1: android开发跟着google的步伐走
Google在2017年的I/O大会上已经宣布kotlin正式成为Android的一级开发语言
2: 别人都在使用
Google发布申明,目前已经有35%的Android专业开发人员使用kotlin(爆发式增长)
3: 以防万一
Java以后要开始收费了,可能导致一部分公司放弃Java
4: 有需求
当前已经有许多公司的招聘要求中,要求开发人员需要会kotlin
5: 简单
学习kotlin一般一周时间就足以完成,且kotlin与Java可以相互调用,觉得kotlin解决不了的地方,仍然可以使用Java编写(非常人性化)
怎么使用Kotlin
保留不重复造轮子的精髓,这里不直接介绍使用步骤,分享几个比较好用的教程地址和记录刚开始比较容易忘记的知识点,或者关键字就ok,本身就是为了做笔记,方便是第一位
1): Kotlin基本环境搭建,语法学习
学习Kotlin,看这一篇就够了: 这个相对比较简洁,看个人接受能力,可以先看菜鸟教程,再看这个
2): Kotlin语法之个人总结
当看完基本语法使用之后,会有些记不住,毕竟和java还是有一些不同,这里记录一些常用的,以便忘记时快速找到
注意:最起码要了解一遍基本语法后再看
新关键字
fun //函数定义使用 如:fun sum(a: Int, b: Int): Int {...}
vararg //函数的变长参数(类似于java里面参数后面带...) 如:fun vars(vararg v:Int){...}
var //可变变量定义(可以代替任意类型) 如: var x = 5
val //不可变变量定义(只能赋值一次的变量(类似Java中final修饰的变量)) 如: val b = 1
is //运算符检测一个表达式是否某类型的一个实例(类似于Java中的instanceof关键字) 如: if (obj is String) {...}
-------------区间↓------------
in //区间 如:for (i in 1..4) print(i)
step //步长 如:for (i in 1..4 step 2) print(i)
.. //从小到大 如:1..4
downTo //从大到小 如:for (i in 4 downTo 1 step 2) print(i)
until //排除 如:for (i in 1 until 4) {...}
------------区间↑-----------
when //类似其他语言的 switch 操作符
field //后端变量
lateinit //非空属性必须在定义的时候初始化,kotlin提供了一种可以延迟初始化的方案 如: lateinit var subject: TestSubject
init //主构造器中不能包含任何代码,初始化代码可以放在初始化代码段中,如: init {...}
constructor //类也可以有二级构造函数,需要加前缀 如: constructor (name: String, alexa: Int) : this(name) {...}
inner //内部类使用 inner 关键字来表示。如 inner class Inner {...}
Unit //是一个特殊的返回值,相当于void,意思就是此函数没有返回值
Any //所有类的超类(类似与object)
新符号功能
$ //这个符号代表在字符串中加代码块 如:"我叫$name" 或者 "我叫${getName()}"
? //NULL检查机制
!! //
: //指定参数类型,指定继承关系
=== //值相等,对象地址才为true
@ //标签(例如:abc@、fooBar@、break@loop)
位操作符
shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 无符号右移位 (Java’s >>>)
and(bits) – 与
or(bits) – 或
xor(bits) – 异或
inv() – 反向
java的静态在kotlin的形态
class Test {
//所有里面的方法和属性都是类似java的静态
companion object {
public fun get(
)
}
}
Test.get() //调用
3): Kotlin语法真正运用到Android开发
自己动手
如果对Kotlin有了大概的了解,基本上就可以开始开发了,只是前期开发慢点,不要想着记得非常熟悉再用,只有真正的使用才会发现问题和深刻记忆!
看别人的简单demo
4):简单的demo例子
package com.example.myapplication
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
/**
* 包含的java对应kotlin写法
*
* 1: btn1 , btn2都是activity_main.xml里面定义的id,在kotlin里面可以直接使用
* 2: 在java里面的匿名内部类
* 3: MainActivity.this
* 4: MainActivity.class
*/
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn1.setOnClickListener { view ->
startActivity(Intent(this, MainActivity::class.java))
}
btn2.setOnClickListener(object : View.OnClickListener {
override fun onClick(p0: View?) {
startActivity(Intent(this@MainActivity, MainActivity::class.java))
}
})
}
}