注意:说明,我也是第一次学习此语言,是按文档方式学习的,所以如果有什么不正确的,请指出,谢谢
使用的环境是win7 64位+IntelliJ IDEA 2017.1.2 x64
首先先说一说这个编辑器怎么安装这个插件呢?
如下图
当安装完这个插件,会提示重启IDE的提示,点击重启即可,
安装和新建kotlin的操作可以看这个地址:IDEA创建Kotlin工程
下面开始入门教程(我是根据官方文档来的,只是简单的介绍,大家如果榻深入学习的话,请访问文档或者搜索博客,github)
基本语法
定义包:包应该在源文件顶部指定:
package my.demo
import java.util.*
这个包是无需匹配对应目录:源文件可以放置在文件系统中任何地方
定义函数
和java,c++,c之类的语言一样,在变量定义类型的时候,必须使用类型指定,不然会报错,如下
语法:
fun 函数名(变量名:变量类型):类型名称{
return 代码体
}
fun sum(a:Int,b:Int):Int{
return a+b
}
当只有一个表达式函数体,可以使用如下方式来表示
fun sum(a:Int,b:Int)=a+b
对于不返回具体值的函数而言,操作是如下:
fun sum(a:Int,b:Int):Unit{
print(a+b)
}Unit
返回类型可以省略:
fun sum(a:Int,b:Int){
print(a+b)
}
定义本地变量
会在内存中一次性(分配为只读)的本地变量:
kotlin声明变量的方法与js类似,是通过var这个关键字来声明的,如下
var a: Int=1
var b=1 //注意:Int类型靠推断得出
//单行注释
/*多行注释*/
var c :Int //此用法与js中var c原理一样,是只声明未初始化值指定类型
c=1 //进行明确的分配数据 `
可变的变量值:
var x=5
x+=1 //它这个操作与js x+=1 一样,也就是x=x+1的写法
变量声明的规则所有语言都是一样的,这边我写下:
- 第一个字符必须是字母、下划线(_)
使用字符串模板
fun main(args: Array<String>){
if(args.size==0)return
print("First argument:${args[0]}")
}
注意:在Kotlin中变量一定要使用比引号,而且变量必须在引号中使用
表达式(多行与一行)
fun max(a:Int,b:Int):Int{
if(a>b){
return a
}else{
return b
}
}
fun max(a :Int ,b :Int)=if(a>b)a else b
注意max()方法可以把{}省略,如下
fun max(a:Int,b:Int):Int{
if(a>b)
return a
else
return b
}
使用可空的值并检测 null
当这个值可空时必须明确地加以标记
当如果 str不是一个表示整数的字符串则返回 null
fun perseInt(str :String): Int?{
//代码体
}
用一个函数返回可空值
fun main(args :Array<String>){
if(args.size<2){
print("two integers expected")
return
}
}
var x=parsetInt(args[0])
var y=parsetInt(args[0])
// 因为有可能保存 `null` ,所以使用 `x * y` 会产生错误。
if(x !=null && y !=null){
print(x*y)
}
//或者写成如下
if (x == null) {
print("${args[0]} 数字格式错误")
return
}
if (y == null) {
print("${args[1]} 数字格式错误")
return
}
// x 和 y 会在空值检查后自动转换为不可空
print(x * y)
//使用类型检查与自动转换
//is运算符检查一个表达式是否是另一个类型的实例
//如果一个不可变的本地变量或属性被检测为一个特定的类型,则不需要明确地转换它:
fun getStringLength(obj:Any):Int?{
if(obj is String){
return obj.length// 在这个作用域中 obj 会自动转换为 String
}
// 在类型检查的作用域之外, obj 的类型仍然为 Any
branch
return null
}
//或者是
fun getStringLength(obj:Any):Int?{
if(obj !is String){
// 在这个作用域中 obj 会自动转换为 String
return obj.length
}
}
//甚至可以这样写
fun getStringLength(obj: Any): Int? {
// 在 && 运算符右边 obj 会自动转换为 String
if (obj is String && obj.length > 0)
return obj.length
return null
}
//使用 for 循环
func main(args :Array<String>){
for(arg in args){
print(arg)
}
}
//或者
func main(args :Array<String>){
for (i in args.indices)
print(args[i])
}
//使用 while 循环
fun main(args: Array<String>){
var i=0
while (i<args.size){
print(args[i++])
}
}
//使用 while 循环
fun abc1(args: Array<String>){
var i=0
while (i<args.size){
print(args[i++])
}
}
//使用 when 表达式
fun abc1(obj: Any){
when(obj){
1 ->print("one")
"Hello" ->print("groo")
is Long ->print("Long")
!is String ->print("Not a string")
else ->print("Unknown")
}
}
//使用“范围”
//要检查某个数字是否在某个范围内,使用 in 操作符:
if(x in 1..y-1)
print("ok")
//检查某个数字是否在某个范围之外:
if(x !in 0..array.lastIndex)
print("out")
//使用集合
//迭代集合:
for(name in items)
println(name)
//要检查某个集合是否包含某个对象,使用 in 操作符:
if (text in names) // names.contains(text) is called
print("Yes")
//使用 lambda 表达式来过滤和映射集合:
names
.filter { it.startsWith("A") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { print(it) }
教程是按这这个链接地址去手动输入的,请大家访问:kotlin