Kotlin Android入门学习一

Kotlin 是一种基于 JVM 的新的编程语言,由 JetBrains 开发,在 Apache 许可下已经开源;
主要优点有:开源、语言简洁、安全、通用、互操作、句末不用分号、跟java互通!哈哈!
Konlin在Android studio 中应用:

1、下载Kotlin插件:
   在Android studio - plugins下搜索kotlin,install
2、在工程的根build.gradle文件中新增Kotlin插件的依赖
   classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.11.91' (版本看自己下载的,同下)
3、配置modulebuild.gradle文件
   apply plugin: 'kotlin-android'
   compile 'org.jetbrains.kotlin:kotlin-stdlib:0.11.91'

通过选择’Code’菜单里面的‘Convert Java File to Kotlin File’选项,
我们可以把当前的activity转换成Kotlin类

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 number
fun 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()}")
}

//遍历整个map
fun 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,它既可以问候你一个,也可以问候your 伐木累

 //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 开源实验室 中文文档翻译

猜你喜欢

转载自blog.csdn.net/azhansy/article/details/50865621