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使用教程(二)
android教程 kotlin,Kotlin for Android使用教程(一)相关推荐
- android studio查看字节码,使用Android studio查看Kotlin的字节码教程
Kotlin是一门JVM语言,它被google大力推广,现如今已经是Android官方推荐的开发语言了.为了更好的学习Kotlin,你必须要从字节码的角度来看待语法特点,这样可以更好的加深自己的理解. ...
- Android实战开发-Kotlin教程(入门篇-RecyclerView数据列表的实现)
在移动应用开发中,很多时候我们需要去展示数据记录,如电商应用中的商品列表.订单列表等等一系列的数据记录的展示时,我们需要用到Android的列表组件展示这些数据,列表组件应该是我们遇到到比较常见也是必 ...
- Android实战开发-Kotlin教程(组件篇 2.3)
上一篇我们对TextView的使用以及相关属性有了一定的了解,本篇我们开始了解Button和EditText.ImageView的使用 Button Button是UI中的一个小部件,主要用于交互中用 ...
- Android RatingBar使用Kotlin
In this tutorial, we'll discuss and implement RatingBar in our Android app using Kotlin. 在本教程中,我们将使用 ...
- Android Studio和Kotlin入门
Welcome to the series of tutorials on Android Development with Kotlin. This series is designed with ...
- 给Android开发者的kotlin使用
IO大会上说把Kotlin作为Android官方语言,虽然以前也听过,但是不了解,这不进来看看,尝试自己翻译一下,之前都是看别人的译文,直接看别人翻译过来的,可能可以节省时间,但是理解可能不够深入,加 ...
- 认识一下Kotlin语言,Android平台的Swift
今天在CSDN首页偶然看到一个贴子JetBrains正式公布Kotlin 1.0:JVM和Android上更好用的语言 看完后,感觉Kotlin语法非常简洁,有一系列动态语言的特点,Lambda表达式 ...
- 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程
认识AndEngine什么是AndEngine 随着Android手机.平板的盛行,Android下的游戏也不断的变得火热.而对于游戏开发有兴趣的同学们,应该也想要学习开发游戏.虽说游戏开发的引擎较多 ...
- Android 2D游戏引擎AndEngine快速入门教程
Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...
最新文章
- noip模拟赛 Chtholly Nota Seniorious
- 给table里面的添加图标_刺激!微信“变色”了!换个带quot;色quot;的图标吧
- oracle批处理参数调用,bat调用jar包并传入多个参数
- 多线程编程学习笔记——任务并行库(二)
- 是什么故障码_大众途观报P2187、P0101故障,差点就换发动机了
- python selenium canvas_selenium webdriver 实现Canvas画布自动化测试
- hashmap put过程_面试官:HashMap 为什么线程不安全?
- window10运行python弹出商店_解决 win10 命令行下运行 python 弹出 Windows 应用商店
- Git 修改已提交 commit 的信息
- 爬虫:Python爬虫学习笔记之Urllib库
- python 制作聊天程序-python实现点对点聊天程序
- Java基础教程汇总
- Oracle体系结构图(思维导图及详解)
- keil安装stm32系列
- H5游戏开发-搭建开发环境
- php pandoc,搭建Pandoc+Markdown写作环境
- v-model 自带绑定的number 、lazy 、debounce属性
- 设计模式 | 观察者模式及典型应用
- R语言sem包实现通径分析
- 简单的基于交换机迁移的SDN控制器负载均衡实验