kotlin基础入门教程

时间:2022-01-12 15:43:36

注意:说明,我也是第一次学习此语言,是按文档方式学习的,所以如果有什么不正确的,请指出,谢谢

使用的环境是win7 64位+IntelliJ IDEA 2017.1.2 x64

kotlin基础入门教程

首先先说一说这个编辑器怎么安装这个插件呢?

如下图
kotlin基础入门教程kotlin基础入门教程kotlin基础入门教程

当安装完这个插件,会提示重启IDE的提示,点击重启即可,

安装和新建kotlin的操作可以看这个地址:IDEA创建Kotlin工程

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