android教程 kotlin,Kotlin for Android使用教程(一)

前言

本文主要讲解如何在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 = 2

p.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 = 1

var 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不能为null

var 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 else

if(a != null)

i = a.length;

else

i = 0;

kotlin

//方式1

var 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使用教程(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值