10分钟入门Kotlin

Kotlin是一门由JetBrains开源的编程语言。

我从2017年开始局部使用,现在安利给没接触过的同学们。

为什么选择Kotlin?

1、基于JVM,静态语言,性能有保障;

2、完全兼容Java,可以混编;

3、语法简单,提供了非常多语法糖;

4、语法安全,在编译期间处理各种为null问题,不需要像Java那样各种非空判断就可以避免绝大部分的NullPointException;

5、IDE支持较好,和大名鼎鼎的IntelliJ IDEA同根生;

6、Google官方推荐Android开发首选语言;

 

本文不介绍使用Kotlin开发Android,介绍使用Kotlin开发服务端(SpringBoot+Kotlin)。

 

一、语法介绍

  • 定义包

package my.demo

import java.util.*
  • 定义函数,返回Int

fun sum(a: Int, b: Int): Int {
    return a + b
}
// OR
fun sum(a: Int, b: Int) = a + b

 

  • 无返回值函数(Unit修饰)

fun printSum(a: Int, b: Int): Unit {
    println("sum of $a and $b is ${a + b}")
}
// OR
fun printSum(a: Int, b: Int) {
    println("sum of $a and $b is ${a + b}")
}

 

  • 定义变量

可以通过val、var定义变量,和Java11类似

val:只能赋值一次

var:可以重新赋值

val a: Int = 1  // 立即赋值
val b = 2   // 自动推断出 `Int` 类型
val c: Int  // 如果没有初始值类型不能省略
c = 3       // 明确赋值

var x = 5 // 自动推断出 `Int` 类型
x += 1

 

  • null安全判断和返回null,类型后面跟"?"

fun test(str : String?) : String?{
   if(str?.length == 0) return null else return str
}

 

  • for循环

val items = listOf("a", "b", "c")
for (item in items) {
    println(item)
}

 

  • while循环

val items = listOf("a", "b", "c")
var index = 0
while (index < items.size) {
    println("item at $index is ${items[index]}")
    index++
}

基础语法就介绍这些,下面介绍下使用Kotlin + Springboot搭建第一个Web项目

 

二、搭建Web程序

 

步骤和创建Java + Springboot应用一致,注意第二个页面,选择语言

10分钟入门Kotlin_第1张图片

 

10分钟入门Kotlin_第2张图片

 

10分钟入门Kotlin_第3张图片

搭建完毕,项目结构如下(多余的目录,删掉即可):

10分钟入门Kotlin_第4张图片

 

Kotlin20190513Application 改为open修饰

创建IndexController

注意选择Kotlin File/Class

类型选择Class

 

10分钟入门Kotlin_第5张图片

 

10分钟入门Kotlin_第6张图片

类上注解@RestController

@RestController
class IndexController {

编写第一个接口(一个name参数,加一个计数功能)

val count = AtomicLong()
@GetMapping("")
fun index(@RequestParam name : String) = "Hello $name,第${count.incrementAndGet()} 次访问"

在Kotlin20190513Application.kt文件上,右键运行,启动项目(和Java + SpringBoot项目一致)

 

浏览器访问接口,加参数名name

默认是8080端口,我这配置了8081

 

第一个接口已经简单完成,只需一行代码。

 

开始开发第二个接口

需求:一个可为空的参数,接口内部循环0-5,根据参数是否为空,返回对应JSON结果

@GetMapping("test")
fun test(@RequestParam(required = false) content : Any?) : Map{
    println(content.toString())

    for (i in 0..5){
        println("当前循环值:$i")
    }

    if(content == null)  return mapOf(Pair("success","T"))
    return mapOf(Pair("success","F"))
}

 

 

浏览器访问http://localhost:8080/test

控制台打印结果:

10分钟入门Kotlin_第7张图片

 

浏览器响应结果:

10分钟入门Kotlin_第8张图片

第二个接口也实现完毕。

 

不知道同学们有没有注意,Kotlin有个小小的优点,不需要在结尾写“;”....

Kotlin是一门语言,也可以看作Java的一个超级类库。

 

本文就安利到这里。

 

更多精彩内容,请关注公众号。

博客文章每周从公众号同步一次。

10分钟入门Kotlin_第9张图片

你可能感兴趣的:(个人,Kotlin)