前言

本文主要讲解如何在Android中使用kotlin语言,如果想了解更多关于kotlin的知识, 请查阅官方中文文档

  • 声明变量
    方法
    继承
    实体类
    静态块companion object
    智能字符串
    范围判断
    再见!findViewById()
    优雅解决NPE
    say bye! if else
    its awesome! when
    思考
    下一章

声明变量

1.var a = 5 or val a: Int = 5
2.val TAG = "com.myapplication.example"

  • var: 任意类型
    val: 常量
    结尾无分号

方法

override fun onCreate(savedInstanceState: Bundle?) {}

  • override: 父类方法
    fun: 方法声明
    ?表示可能为空
    无返回值
//有返回值fun sum(a: Int,b: Int): Int{    retrun a + b}//等同于fun sum(a: Int,b: Int) = a + b //一脸懵逼了?//这个呢?fun maxOf(a: Int, b: Int): Int {    if (a > b) {        return a    } else {        return b    }}//等同于fun maxOf(a: Int, b: Int) = if (a > b) a else b//慢慢消化吧~

继承

  • 参数继承

view instanceof Button to view is Button

  • class继承

class MainActivity : AppCompatActivity(){}

实体类

  • example A:
//class有构造参数时class Person(a: Int,b:String){    var id = 0    var name = ""}var p = Person(2,"helloWorld")
  • example B:
//class无构造参数时class Person{    var id = 0    var name = ""}var p = Person()p.id = 2p.name = "helloWorld"
  • 注意:全局变量一定得初始化,而局部变量可以不初始化,这是和java不同的地方

静态块companion object

class A() {companion object {      val TAG_SIZE = 100  }}//使用:var i = A.TAG_SIZE

智能字符串

  • java:

xxx.println("---size:"+list.size());

  • kotlin:

print("---size: ${list.size},first: ${list[0]}")

//同理可得var i: Int = 1var s: String = "helloWorld:$i"//值为helloWorld:1

范围判断

  • java:

1.if(a >= 3 && a<= b){...}

2.if(!(c >='a' && c<= 'z')) {    int i = 'a';}
  • kotlin:

1.if(a in 3..b){...}

2.if(c !in 'a'..'z'){    var i: Int = 'a'.toInt()    }
  • 注意是两个.来表示范围

再见!findViewById()

1.在project -> build.gradle添加
classpath "org.jetbrains.kotlin:kotlin-android-extensions:1.1.0"
2.在app->build.gradle添加
apply plugin: 'kotlin-android-extensions'
compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0"

//导入activity_main布局文件中的所有控件import kotlinx.android.synthetic.main.activity_main.*//activity_main布局文件中有一个TextView控件,id为text01//使用text01.text = "helloWorld"

优雅解决NPE

var a: String = "abc"a = null//报错,提醒a不能为nullvar i = a.length//就算通过了,这里也会报错,因为a为null//变换之后var a: String? = "abc"a = null//通过,因为我说了a是可以为null的var i = a?.length//在这里如果a为null就返回null如果a不为null就正确返回//这样a是null也不会报空指针异常了,一个?修饰符优雅解决!//更多使用//如果想知道bob所在部门的老大的名字但又不知道哪个为null的时候var name: String= bob?.department?.header?.name

say bye! if else

首先是非空判断

  • java
//三元运算符int i = a != null ? a.length : 0;//if elseif(a != null)    i = a.length;else    i = 0;
  • kotlin
//方式1var i: Int = if(a != null) a.length else 0 //竟然还有if else真不爽啊//那么方式2来了var i: Int = a?.length ?: 0;//一脸懵逼?!//别慌,这里的意思是如果?:左边的表达式不为null,则返回,也就是a.length,如果为null就返回?:右边的表达式,也就是0

这是普通的if else判断

  • java
if(a > b)    i = a;else    i = b;
  • kotlin
var i: Int = if(a > b) a else b

its awesome! when

现在采用全新而炫酷的表达方式:when

when (a) {        1 -> print("its 1")        3,4 -> print("its 3 or 4")        sum(a,1) -> print("its a + 1")        in 1..10 -> print("its >=1 and <= 10")         else -> print("error!nothing!")    }//是不是有Rxjava的味道呢?23333//接下来是替换if的情况,这个很好理解var word: String = when{    bob.isSay() -> "bob say!"    jojo.isSay() -> "jojo say!"    else -> "not say anything!"}//最后是变(diao)态(zha)的(tian)使用fun getName(p: Person,str: String): String = when(p.id){    1 -> p.name    else -> str}
  • 支持单值判断
    支持多个值判断
    支持方法返回值判断
    支持范围判断
    支持末尾else
    支持直接赋值给变量或方法
    支持替换if-else的if

思考

val bob = Person(26,"Bob")    print("$bob.id")    print("${bob.id}")//输出的结果是?

下一章

  • Kotlin for Android使用教程(二)

更多相关文章

  1. Service的onStartCommand方法的疑问
  2. 移动开发:Android官方提供的支持不同屏幕大小的全部方法
  3. Android(安卓)官方数据绑定 Data Binding Library
  4. AndroidStudio中使用Kotlin--实现接口方法
  5. Android(安卓)架构组件之 Lifecycle 使用详解
  6. Android音乐播放器【支持:速率调节,音调调节,采样率调节】
  7. [WebView学习之二]:使用Web Apps 支持不同分辨率屏
  8. Android(安卓)- base - SQLite
  9. Android支持AMDGPU显卡

随机推荐

  1. Android实现打电话功能
  2. android实现涂鸦,保存涂鸦后的图片,清屏
  3. Install Android(安卓)Composite ADB Int
  4. Android四大组件Service之bindService启
  5. android native call only, no third par
  6. Android实践之TabActivity
  7. How to parse / read JSON data into a A
  8. android 手机判断是否在充电 如断电自动
  9. AppCompat does not support the current
  10. Android中ActionBar居中