Kotlin学习-基础语法

写在前面

因为实验室需要,需要将原来的桌面应用程序改成安卓端的程序,所以正好使用kotlin进行开发。

主要内容

基础知识

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

文件格式

Kotlin 程序文件以 .kt 结尾,如:hello.kt 、app.kt。

为什么选择 Kotlin?

简洁: 大大减少样板代码的数量。
安全: 避免空指针异常等整个类的错误。
互操作性: 充分利用 JVM、Android 和浏览器的现有库
工具友好: 可用任何 Java IDE 或者使用命令行构建。

构建kotlin项目

我们如果想拥有学习Kotlin的相对较好的体验,就不建议使用eclipse了。毕竟Kotlin是JetBrains家族的亲儿子,跟Intelli IDEA是血浓于水啊

基础语法总结

package zhc

/*
基础语法:函数的类型和名称的顺序和一般的语言是相反的,使用:分隔
函数的返回值也是放在形参列表的后面使用分号进行识别,如果返回为空则不需要标识返回值。
语句之间不需要;结尾
语句块的划分还是{}的形式
函数也不需要前置声明就可以使用,可以在其调用的地方之前使用。
注释和java一样。
 */
fun sum(a:Int,b:Int):Int {
    return a + b
}
/*
将表达式作为函数体、返回值类型自动推断的函数:
 */
fun sum2(a:Int,b:Int) = a + b

/*
字符串模板的功能:
$符号有点意思就是在字符串当中可以使用$变量名这样实际的字符串当中的该位置是该变量的实际的值,
${}当中的表达式也会被计算出实际的值替换当前的字符串的位置。使用很方便。
字符串模板的功能嵌套函数使用非常的简单。
 */
fun sum3(a:Int,b:Int) {
    println("$a + $b = ${a + b}")
}


/*
main 函数的形式
 */
fun main(args: Array<String>) {
    println("Helloworld!")
    println(sum(10,100))
    sum3(100,1000)

    /*
    变量的定义:
    var 变量名 = 值
    变量的类型可以自动推断像c++11里的auto
    也可以显示的定义变量的类型 var x :Int = 10
    在main函数外部的定义的变量是全局变量成为顶层变量,其他的在全局作用域当中的作用域当中都可以访问到这个变量。
     */
    var x = 10
    x += 1
    println(x)

    /*
    条件表达式:和java c++一样的风格
    但是高级的是if的条件表达式可以作为表达式给函数赋值
     */
    if(x>10)
        println(x)
    else
        println("hhh")
     /*
     类型检查的功能is运算符
     类型检查非常的方便。
      */
    println(x is Int)

    /*
    for循环很高级 基本类似python对于可迭代的对象直接就可以使用in操作符进行序列化的访问
    listOf应该是一个列表容器。
     */
    val items = listOf("apple", "banana", "kiwifruit")
    for (item in items) {
        println(item)
    }

    for (index in items.indices) {
        println("item at $index is ${items[index]}")
    }
    /*
    while循环语法和其他的语言一致。
     */
    println(describe(1))
    println(describe("Hello"))
    println(describe(1000L))
    println(describe(2))
    println(describe("other"))

    /*
    区间表示使用in操作符可以检测某个值是不是在一个区间
    ..表示省略号  语法非常的简单 不像python还有一个range(1,10)这样的函数调用。
    in 就是检测在不在 !in就是检测是不是不在
    x in 1..10 这样的语法就很简单的可以进行1到10的循环迭代非常的简单 没有定义局部循环变量的麻烦也不需要++的操作
    而且就是完全的闭区间没有任何的多余的地方。也就是所见即所得。指定步长使用step
     */
    x = 10
    val y = 9
    if (x in 1..y+1) {
        println("fits in range")
    }

    for (x in 1..10 step 2) {
        print(x)
    }
    println()
    //降序的输出
    for (x in 9 downTo 0 step 3) {
        print(x)
    }

    /*
    这里的lambda表达式的语法是牛逼了
    反正简单到爆炸。
     */
    val fruits = listOf("banana", "avocado", "apple", "kiwifruit")
    fruits
            .filter { it.startsWith("a") }
            .sortedBy { it }
            .map { it.toUpperCase() }
            .forEach { println(it) }
}


/*
when表达式
就是switch 看起来简洁明了 然后可以多个比较条件也可以是表达式函数等等
就是非常的简单,具体的用法就和人的语法很接近。
 */

fun describe(obj: Any): String =
        when (obj) {
            1          -> "One"
            "Hello"    -> "Greeting"
            is Long    -> "Long"
            !is String -> "Not a string"
            else       -> "Unknown"
        }

猜你喜欢

转载自blog.csdn.net/zhc_24/article/details/82495864