当前位置: 首页 > news >正文

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

目录

    • Kotlin 简介
    • Kotlin的优点
    • Kotlin对服务器端开发
    • Kotlin的数据类型
    • Kotlin访问修饰符
    • Kotlin基本语法
    • Kotlin应用之—— Spring Boot 创建 Restful Web 服务

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

Kotlin访问修饰符

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

Kotlin基本语法

打印日志

//Java
System.out.println("你好呀");

//Kotlin
println("你好呀")

定义变量与常量常

//Java
String name = "hello world";
final String name = "hello world";

//Kotlin
var name = "hello world"
val name = "hello world"

空字符串定义

//Java
String name=null

//Kotlin
var name:String?=null

字符串拼接

String hello = "Hello"
String world = "World"
String message =  hello + world;

val hello = "Hello"
val world = "World"
val message = "$hello$world"

字符串换行(此功能真的好方便的!在写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
        """

如图:
Kotlin换行

条件判断

//Java
if (num >= 0 && num<= 100) { }
//Kotlin
if (num in 0..100) { }

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) { }

集合操作


//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")

方法的定义

//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
}

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)

**

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')
}

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

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

现在,定义 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")}

可以看出,这几乎是 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)
}

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

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

Running App

启动

相关文章:

  • Ubuntu如何给tar.gz文件创建桌面快捷方式
  • 二叉树的层次遍历(配图详解)
  • libVLC Ubuntu编译详解
  • 【leetcode面试经典150题】59. 合并两个有序链表(C++)
  • AI讲师人工智能讲师大模型培训讲师叶梓:突破大型语言模型推理效率的创新方法
  • Liquibase中MARK_RAN与EXECUTED:解析与实战应用.
  • C语言printf()大全
  • 基于SpringBoot+Apache ECharts的前后端分离外卖项目-苍穹外卖(十八)
  • linux ps 命令详解
  • Python 实现Excel自动化办公(下)
  • Vue/React 前端高频面试
  • js经典面试题堆和栈
  • 机器学习——代价函数
  • 【百日刷题计划 第八天】——熟悉字符串 字符串基础题
  • python 处理阻尼正弦
  • 人工智能基础:人工智能云服务(Alaas)介绍
  • 【Leetcode】1092. Shortest Common Supersequence
  • Datawhale 202210 Excel | 第五、六、七章 Excel函数示例 Excel函数列表
  • matlab实时串口通讯示例
  • 18-CSS3的2D和3D属性
  • 【韩顺平老师讲MySQL】数据类型详解
  • 认识和了解Linux文件系统。
  • Simulink 自动代码生成电机控制:基于Keil软件集成
  • 【ArchSummit】小红书缓存服务多云建设之路
  • Educational Codeforces Round 137 (Rated for Div. 2)-赛后总结
  • Python图形处理
  • 【网站架构】4核CPU的MySQL调优3万RPS吞吐量?数据库集群高可用
  • Codeforces Round #828 (Div. 3)-赛后总结
  • C语言指针个人理解
  • 网络安全系统性学习路线「全文字详细介绍」
  • 你有一份奖学金,请注意查收~浙江财经大学 MBA奖学金
  • 手把手教你Linux的服务管理