写在前面
因为实验室需要,需要将原来的桌面应用程序改成安卓端的程序,所以正好使用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"
}