Kotlin Android入门学习一
来源:互联网 发布:北京网站排名优化公司 编辑:程序博客网 时间:2024/05/18 11:37
Kotlin 是一种基于 JVM 的新的编程语言,由 JetBrains 开发,在 Apache 许可下已经开源,主要优点有:开源、语言简洁、安全、通用、互操作、句末不用分号、类似JAVA!哈哈!
Konlin在Android studio 中应用:
1、下载Kotlin插件:a)在Android studio - plugins下搜索kotlin,install2、在工程的根build.gradle文件中新增Kotlin插件的依赖a)classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.11.91' (版本看自己下载的,同下)3、配置module的build.gradle文件a)apply plugin: 'kotlin-android'b)compile 'org.jetbrains.kotlin:kotlin-stdlib:0.11.91'4、全局搜索,Configure kotlin 回车 //我也不懂,照葫芦画瓢5、通过选择'Code'菜单里面的‘Convert Java File to Kotlin File’选项,我们可以把当前的activity转换成Kotlin类
然后,看看生成的MainActivity有什么不一样把!
Kotlin使用:
1、方法的定义
(fun 前,跟java一样,公开的、保护的、私有的,不写默认为公开的)
关键词fun 方法名(参数) 返回类型(Unit为java的void,默认省略) {}
2、简单的小例子(参考官方的)
//程序入口fun main(args: Array<String>) { println("Hello, world!")}//字符串中需要打印参数,则需在参数前加$//读取args数组下标为0的字符串fun main(args: Array<String>) { if (args.size == 0) { println("Please provide a name as a command-line argument") return } println("Hello, ${args[0]}!")}//循环打印数组fun main(args: Array<String>) { for (name in args) println("Hello, $name!")}//when的使用 类似java的switch,高富帅的通过,不符合的,呵呵fun main(args: Array<String>) { val language = if (args.size == 0) "EN" else args[0] println( when (language) { "EN" -> "Hello!" "FR" -> "Salut!" "IT" -> "Ciao!" else -> "Sorry, I can't greet you in $language yet" })}//调用类中的方法class Greeter(val name: String) { fun greet() { println("Hello, ${name}"); }}fun main(args: Array<String>) { Greeter(args[0]).greet()}//注:Unit为java中的void//返回最大值函数:fun max(a: Int, b: Int) = if (a > b) a else b//空指针检查// Return null if str does not hold a numberfun parseInt(str: String): Int? { try { return Integer.parseInt(str) } catch (e: NumberFormatException) { println("One of the arguments isn't Int") } return null}fun main(args: Array<String>) { if (args.size < 2) { println("No number supplied"); } else { val x = parseInt(args[0]) val y = parseInt(args[1]) // We cannot say 'x * y' now because they may hold nulls if (x != null && y != null) { print(x * y) // Now we can } else { println("One of the arguments is null") } }}//参数:任何类型的对象,返回字符串的长度,类型不一致则返回空fun getStringLength(obj: Any): Int? { if (obj is String) return obj.length // no cast to String is needed return null}//循环while使用 do..while一样fun main(args: Array<String>) { var i = 0 while (i < args.size) println(args[i++])}//返回 Int型的函数fun sum(a: Int, b: Int): Int {return a + b}//For循环遍历任何提供了一个迭代器fun main(args: Array<String>) { for (arg in args) println(arg) // or println() for (i in args.indices) println(args[i])}//in的用法fun main(args: Array<String>) { val x = Integer.parseInt(args[0]) //Check if a number lies within a range: val y = 10 if (x in 1..y - 1) println("OK") //Iterate over a range: for (a in 1..5) print("${a} ") //Check if a number is out of range: println() val array = arrayListOf<String>() array.add("aaa") array.add("bbb") array.add("ccc") if (x !in 0..array.size - 1) println("Out: array has only ${array.size} elements. x = ${x}") //Check if a collection contains an object: if ("aaa" in array) // collection.contains(obj) is called println("Yes: array contains aaa") if ("ddd" in array) // collection.contains(obj) is called println("Yes: array contains ddd") else println("No: array doesn't contains ddd")}//多类型描述定义fun main(args: Array<String>) { val pair = Pair(1, "one") val (num, name) = pair println("num = $num, name = $name")}class Pair<K, V>(val first: K, val second: V) { operator fun component1(): K { return first } operator fun component2(): V { return second }}//定义实体类,使用类的属性,看清楚类前有data!!data class User(val name: String, val id: Int)fun getUser(): User { return User("Alex", 1)}fun main(args: Array<String>) { val user = getUser() println("name = ${user.name}, id = ${user.id}") // or val (name, id) = getUser() println("name = $name, id = $id") // or println("name = ${getUser().component1()}, id = ${getUser().component2()}")}//遍历整个mapfun main(args: Array<String>) { val map = hashMapOf<String, Int>() map.put("one", 1) map.put("two", 2) for ((key, value) in map) { println("key = $key, value = $value") }}//实体类很碉堡的,类似java functions, toString(), equals(), hashCode() and copy(),getter、setter都默认有!data class User(val name: String, val id: Int)fun main(args: Array<String>) { val user = User("Alex", 1) println(user) // toString() val secondUser = User("Alex", 1) val thirdUser = User("Max", 2) println("user == secondUser: ${user == secondUser}") println("user == thirdUser: ${user == thirdUser}") // copy() function println(user.copy()) println(user.copy("Max")) println(user.copy(id = 2)) println(user.copy("Max", 2))}
我比较喜欢kotlin的in,它既可以问候你一个,也可以问候你全家
//X为参数 if (x in 1..10 ) println("OK") for(x in 1..10 ) println("你好:${x}")
感谢与参考:
http://www.yyxt.com/tutorial/6354.html 环境配置
http://kotlinlang.cn/ kotlin中文网
http://try.kotlinlang.org/#/Examples/Hello,%20world!/An%20object-oriented%20Hello/An%20object-oriented%20Hello.kt 在线练习
https://github.com/kymjs/KotlinDoc-cn 开源实验室 中文文档翻译
0 0
- Kotlin Android入门学习一
- kotlin入门学习(一)
- Android Kotlin学习(一)
- Kotlin开发Android入门(一)
- Android kotlin入门与基础语法一
- Android中Kotlin简单入门(一)
- kotlin开发Android入门篇一
- Kotlin Android Studio入门学习研究
- Android Kotlin学习之路(一) —— 配置Kotlin
- 一步步学习kotlin for android(一)配置kotlin
- Android Kotlin学习笔记(一)---初探Kotlin
- Kotlin学习一 Android Studio 中安装 Kotlin Plugin
- Android之开始学习Kotlin(一)
- 一周入门Kotlin(一)
- 一周入门Kotlin(一)
- kotlin入门(一)helloworld
- Kotlin入门学习
- Kotlin入门学习
- 大数据平台基础架构和常用处理工具
- SVProgressHUD使用详解
- Andrew Ng 机器学习笔记(五)
- 移动前端的一些坑和解决方法(外观表现)
- react.js-01-HelloWorld
- Kotlin Android入门学习一
- 丑数的问题
- 黄金连分数(高精度浮点值)
- 用badgeview实现tab的角标
- day31:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度
- python Dos下中文编码
- CSS - 常用行、块级元素都有哪些?
- RatingBar的使用
- mysql实现主从复制