• 简单上手_Kotlin,让开发更简洁


    Kotlin 简介

    Kotlin 是一个用于现代多平台应用的静态编程语言 ,由 JetBrains 开发。
    Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。除此之外Kotlin还可以编译成二进制代码直接运行在机器上(例如嵌入式设备或 iOS)。
    Kotlin已正式成为Android官方支持开发语言。

    Kotlin的优点

    一、简洁
    对于Java来说Kotlin的简洁体现在很多方面,最明显的就是在Kotlin语法中直接省略了分号,并且在构造一个类的实例时省略了new关键字

    二、安全
    在Java和许多编程语言中常常出现访问空的指针,导致空指针异常。Kotlin的安全性主要体现在它对Null-Safety的支持上。能够使代码在编译期间就察觉到NullPointerException,让Java developer能够轻松避免NullPointerException。你可以节约很多调试空指针异常的时间,解决null引发的空指针问题。

    三、Kotlin和Java是可以相互调用、无缝衔接的。
    我们可以利用任何已有的Java libraries来构建我们的应用,可以使用之前熟悉的Java经验来对Kotlin项目进行编程,达到无缝衔接的过程,如果你有Java经验,那对初学Kotlin来说,那简直如鱼得水。

    Kotlin对服务器端开发

    Kotlin 非常适合开发服务器端应用程序,可以让你编写简明且表现力强的代码, 同时保持与现有基于 Java 的技术栈的完全兼容性以及平滑的学习曲线

    表现力:Kotlin 的革新式语言功能,例如支持类型安全的构建器和委托属性,有助于构建强大而易于使用的抽象。

    可伸缩性:Kotlin 对协程的支持有助于构建服务器端应用程序, 伸缩到适度的硬件要求以应对大量的客户端。

    互操作性:Kotlin 与所有基于 Java 的框架完全兼容,可以让你保持熟悉的技术栈,同时获得更现代化语言的优势

    迁移:Kotlin 支持大型代码库从 Java 到 Kotlin 逐步迁移。你可以开始用 Kotlin 编写新代码,同时系统中较旧部分继续用 Java。

    工具:除了很棒的 IDE 支持之外,Kotlin 还为 IntelliJ IDEA Ultimate 的插件提供了框架特定的工具(例如 Spring)。

    学习曲线:对于 Java 开发人员,Kotlin 入门很容易。包含在 Kotlin 插件中的自动 Java 到 Kotlin 的转换器有助于迈出第一步。Kotlin 心印 通过一系列互动练习提供了语言主要功能的指南。

    Kotlin的数据类型

    对于掌握Java基础的大神们来说,入门Kotlin那简直是信手拈来。

    Java TypeKotlin Type
    bytekotlin.Byte
    Shortkotlin.Short
    intkotlin.Int
    floatkotlin.Float
    longkotlin.Long
    charkotlin.Char
    doublekotlin.Double
    booleankotlin.Boolean

    注意:如果变量为null,则使用?操作符,编译后自动变为包装类型,如果不能为null,就是基本类型。
    例如:

    //带操作符?的自动转为包装类型Integer类型
     val a:int? =null
     val a:int =1
    
    • 1
    • 2
    • 3

    Kotlin访问修饰符

    修饰符JavaKotlin
    public所有类可见所有类可见(默认)
    private当前类可见当前类可见
    protected当前类、子类、同一包路径下的类可见当前类、子类可见
    default同一包路径下的类可见(默认)
    internal同一模块中的类可见

    Kotlin基本语法

    打印日志

    //Java
    System.out.println("你好呀");
    
    //Kotlin
    println("你好呀")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    定义变量与常量常

    //Java
    String name = "hello world";
    final String name = "hello world";
    
    //Kotlin
    var name = "hello world"
    val name = "hello world"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    空字符串定义

    //Java
    String name=null
    
    //Kotlin
    var name:String?=null
    
    • 1
    • 2
    • 3
    • 4
    • 5

    字符串拼接

    String hello = "Hello"
    String world = "World"
    String message =  hello + world;
    
    val hello = "Hello"
    val world = "World"
    val message = "$hello$world"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    字符串换行(此功能真的好方便的!在写Mybatis注解sql时,就很清晰明了)

    //Java
    String text="Hi everyone and welcome to my blog.\n" +
    				"please advise";
    //Kotlin
     val text = """
                Hi everyone and welcome to my blog.
    			please advise
            """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如图:
    Kotlin换行

    条件判断

    //Java
    if (num >= 0 && num<= 100) { }
    //Kotlin
    if (num in 0..100) { }
    
    • 1
    • 2
    • 3
    • 4

    for循环

    //Java
    for (int i = 1; i <= 10 ; i++) { }
    
    for (int i = 1; i < 10 ; i++) { }
    
    for (int i = 10; i >= 0 ; i--) { }
    
    //Kotlin
    for (i in 1..10) { }
    
    for (i in 1 until 10) { }
    
    for (i in 10 downTo 0) { }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    集合操作

    
    //Java
    final List<Integer> listOfNumber = Arrays.asList(1, 2, 3, 4);
    
    final Map<Integer, String> animal = new HashMap<Integer, String>();
    map.put(1, "dog");
    map.put(2, "cat");
    map.put(3, "pig");
    
    // Java 9
    final List<Integer> listOfNumbers = List.of(1, 2, 3, 4);
    
    final Map<Integer, String> animal = Map.of(1, "dog",
                                               2, "cat",
                                               3, "pig");
    
    
    //Kotlin
    val listOfNumber = listOf(1, 2, 3, 4)
    val animal= mapOf(1, "dog",
                      2, "cat",
                      3, "pig")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    方法的定义

    //Java
    public void method(){
    		System.out.println("This is Method");
    }
    //Kotlin
    fun method() {
         println("This is Method")
    }
    
    //有返回值Java
    public int method(){
    	return 1;
    }
    //有返回值Kotlin
    fun method():Int {
        return 1
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    Get Set构造器

    //Java
    public class User{
    
        private String name;
        private int age;
    
        public Developer(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    //Kotlin
    class User(var name: String, var age: Int)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    **

    Kotlin应用之—— Spring Boot 创建 Restful Web 服务

    **
    本教程将引导完成使用 Spring Boot 创建简单的 REST 控制器的过程

    1、定义项目与依赖项

    buildscript {
        ext.kotlin_version = '1.4.20' // Kotlin 集成所需
        ext.spring_boot_version = '2.1.0.RELEASE'
        repositories {
            jcenter()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // Kotlin 集成所需
            classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version" // 参见 https://www.kotlincn.net/docs/reference/compiler-plugins.html#spring-support
            classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version"
    	classpath "io.spring.gradle:dependency-management-plugin:1.0.6.RELEASE"
        }
    }
    
    apply plugin: 'kotlin' // Kotlin 集成所需
    apply plugin: "kotlin-spring" // https://www.kotlincn.net/docs/reference/compiler-plugins.html#spring-support
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    
    jar {
        baseName = 'gs-rest-service'
        version = '0.1.0'
    }
    
    repositories {
        jcenter()
    }
    
    dependencies {
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" // Kotlin 集成所需
        compile "org.springframework.boot:spring-boot-starter-web"
        testCompile('org.springframework.boot:spring-boot-starter-test')
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    2、创建 Greeting 数据类与控制器
    下一步是创建具有两个属性(id 与 content)的 Greeting 数据类

    data class Greeting(val id: Long, val content: String)
    
    • 1

    现在,定义 GreetingController ,以 /greeting?name={value} 的形式接受请求, 并返回表示 Greeting 实例的 JSON 对象。

    @RestController
    class GreetingController {val counter = AtomicLong()@GetMapping("/greeting")
        fun greeting(@RequestParam(value = "name", defaultValue = "World") name: String) =
                Greeting(counter.incrementAndGet(), "Hello, $name")}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    可以看出,这几乎是 Java 到 Kotlin 的一对一转换,对 Kotlin 没有任何特殊要求。

    创建 Application 类
    最后,需要定义一个 Application 类。使用 Kotlin 来定义一个 Spring Boot 所需的公共静态 main 方法。 可以使用 @JvmStatic 注解与一个伴生对象来完成,但在这里更推荐使用 Application 类外部定义的顶级函数,因为这可以使代码更简洁明了。

    无需将 Application 类标记为 open,因为 Gradle 插件 kotlin-spring 会自动完成。

    @SpringBootApplication
    class Application
    ​
    fun main(args: Array<String>) {
        SpringApplication.run(Application::class.java, *args)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行应用程序
    现在可以使用一个 Gradle 标准任务来运行 Spring Boot 应用:

    ./gradlew bootRun
    当应用完成编译,资源捆绑并启动,就可以通过浏览器访问了(默认端口为 8080)

    Running App

    启动

  • 相关阅读:
    AI爆文变现-写作项目-脚本配置教程-解放双手
    二进制部署k8s集群之cni网络插件
    【带头学C++】基础知识[入门篇]----1.18 volatile强制访问内存
    skywalking源码——skywalking-agent——datacarrier模块
    【图像融合】基于matlab DSIFT多聚焦图像融合【含Matlab源码 2224期】
    ThePASS 研究院|探索 Aragon:开创性的 DAO 基础设施实现全面治理
    《Hello Algo》:动画图解引领的数据结构与算法学习之旅
    从零开始开发企培源码:搭建企业内训小程序的全面指南
    Flutter的强制自我审查
    基于 Kafka 的实时数仓在搜索的实践应用
  • 原文地址:https://blog.csdn.net/weixin_42794881/article/details/127375780