前言

本文主要讲解如何在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使用教程(二)

android教程 kotlin,Kotlin for Android使用教程(一)相关推荐

  1. android studio查看字节码,使用Android studio查看Kotlin的字节码教程

    Kotlin是一门JVM语言,它被google大力推广,现如今已经是Android官方推荐的开发语言了.为了更好的学习Kotlin,你必须要从字节码的角度来看待语法特点,这样可以更好的加深自己的理解. ...

  2. Android实战开发-Kotlin教程(入门篇-RecyclerView数据列表的实现)

    在移动应用开发中,很多时候我们需要去展示数据记录,如电商应用中的商品列表.订单列表等等一系列的数据记录的展示时,我们需要用到Android的列表组件展示这些数据,列表组件应该是我们遇到到比较常见也是必 ...

  3. Android实战开发-Kotlin教程(组件篇 2.3)

    上一篇我们对TextView的使用以及相关属性有了一定的了解,本篇我们开始了解Button和EditText.ImageView的使用 Button Button是UI中的一个小部件,主要用于交互中用 ...

  4. Android RatingBar使用Kotlin

    In this tutorial, we'll discuss and implement RatingBar in our Android app using Kotlin. 在本教程中,我们将使用 ...

  5. Android Studio和Kotlin入门

    Welcome to the series of tutorials on Android Development with Kotlin. This series is designed with ...

  6. 给Android开发者的kotlin使用

    IO大会上说把Kotlin作为Android官方语言,虽然以前也听过,但是不了解,这不进来看看,尝试自己翻译一下,之前都是看别人的译文,直接看别人翻译过来的,可能可以节省时间,但是理解可能不够深入,加 ...

  7. 认识一下Kotlin语言,Android平台的Swift

    今天在CSDN首页偶然看到一个贴子JetBrains正式公布Kotlin 1.0:JVM和Android上更好用的语言 看完后,感觉Kotlin语法非常简洁,有一系列动态语言的特点,Lambda表达式 ...

  8. 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程

    认识AndEngine什么是AndEngine 随着Android手机.平板的盛行,Android下的游戏也不断的变得火热.而对于游戏开发有兴趣的同学们,应该也想要学习开发游戏.虽说游戏开发的引擎较多 ...

  9. Android 2D游戏引擎AndEngine快速入门教程

    Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...

最新文章

  1. noip模拟赛 Chtholly Nota Seniorious
  2. 给table里面的添加图标_刺激!微信“变色”了!换个带quot;色quot;的图标吧
  3. oracle批处理参数调用,bat调用jar包并传入多个参数
  4. 多线程编程学习笔记——任务并行库(二)
  5. 是什么故障码_大众途观报P2187、P0101故障,差点就换发动机了
  6. python selenium canvas_selenium webdriver 实现Canvas画布自动化测试
  7. hashmap put过程_面试官:HashMap 为什么线程不安全?
  8. window10运行python弹出商店_解决 win10 命令行下运行 python 弹出 Windows 应用商店
  9. Git 修改已提交 commit 的信息
  10. 爬虫:Python爬虫学习笔记之Urllib库
  11. python 制作聊天程序-python实现点对点聊天程序
  12. Java基础教程汇总
  13. Oracle体系结构图(思维导图及详解)
  14. keil安装stm32系列
  15. H5游戏开发-搭建开发环境
  16. php pandoc,搭建Pandoc+Markdown写作环境
  17. v-model 自带绑定的number 、lazy 、debounce属性
  18. 设计模式 | 观察者模式及典型应用
  19. R语言sem包实现通径分析
  20. 简单的基于交换机迁移的SDN控制器负载均衡实验

热门文章

  1. VS2005的数据断点功能
  2. 一个人从MyIe到FireFox的转变
  3. javawen学习自定义标签开发
  4. Exchange笔记之Exchange2010部署实施
  5. Java VM错误解决方法
  6. java毕业设计家校通管理系统mybatis+源码+调试部署+系统+数据库+lw
  7. 物联网展-2019北京国际物联网展览会-北京物联网展-北京物联网大会
  8. 算法训练 子网掩码(25分)c++实现
  9. 20180316 三对角矩阵
  10. w ndows10装什么浏览器,win10怎么重装ie浏览器