在 担任教育工作者多年 之后,我成为了一名专业的软件开发人员。这让我接触到了 Java,但最近,我开始享受一种完全不同但兼容的编程语言,称为 Kotlin。
Kotlin 是一种跨平台、通用编程语言,可在 Java 虚拟机 (JVM) 上运行。 JetBrains 领导了它的实现,该实现始于 2010 年,并且自开发初期以来一直是开源的。
对于 Java 开发人员来说,好消息是 Kotlin 与 Java 是可互操作的。标准 Java 代码可以包含在 Kotlin 程序中,而 Kotlin 也可以包含在 Java 程序中。这种对兼容性的巨大投入意味着,如果您有 Java 背景,那么上手 Kotlin 会感到熟悉且风险较低,因为它将与您现有的任何 Java 代码并行运行。
为了向您介绍 Kotlin,我将介绍它的一些基本语法,从变量到定义函数和类。如果您想继续学习并了解该语言的一些功能,可以使用一个很棒的基于浏览器的 Kotlin playground。
变量
Kotlin 中的变量会让人感到熟悉。以下是一些创建基本整数的示例
var I = 5
val j = 7
var k:Int = 8
var
和 val
赋值之间存在细微但重要的区别:当您定义的变量可以重新赋值时使用 var
,而对于不会更改的局部作用域值,则使用 val
。每个变量的类型都是可选的,因为类型可以被推断出来,类似于 JavaScript 中的动态赋值。还有可空赋值,它使用如下语法
var f: Int? = 9
这意味着赋值可以等于 null。使用 null 的原因超出了本文的范围,但重要的是要知道,只有在显式定义为 null 时,变量才能等于 null。
如果您计划定义一个没有初始实例化(值)的变量,则必须将类型放在变量名称之后
var s: Int
字符串的组成方式类似,类型也在变量名称之后
val a:String = "Hello"
字符串在 Kotlin 中具有超能力。它们包括很棒的字符串模板函数,您可以探索它们。
数组
另一种基本类型是数组。它可以存储预定数量的相同定义类型的对象。在 Kotlin 中,有几种不同的方法可以创建数组,例如
val arrA = arrayOf(1,2,3)
val arrB = arrayOfNulls<Int?>(3)
val arrC = Array<Int?>(3){5}
第一个创建一个长度为 3 的数组,元素为 1、2 和 3;第二个创建一个类型为可空整数的空值数组;第三个创建一个可空整数数组,其中每个元素都等于 5。
要检索其中一个元素,请使用方括号表示法,从零开始。因此,要检索第一个数组中的第一个元素,请使用:arrA[0]
。
集合
在 Kotlin 中对对象进行分组的其他方法通常称为集合。 Kotlin 中有几种类型的集合。每种集合可以是可变的(可更改/可写)或不可变的(只读)。
- 列表: 有序的项目组可以包含重复的项目,并且必须是相同的类型。可变列表可以像这样形成
var mutList = mutableListOf(7,5,9,1) val readList = listOf(1,3,2)
- 映射: 映射类似于 Java 中的 HashMap,按键和值组织。键必须是不同的。它们的实例化方式如下
var mapMut = mutableMapOf(5 to "One", 6 to "Five" ) val mapRead = mapOf(1 to "Seven", 3 to "six")
- 集合: 集合是一种数据结构,其中组中的每个对象都是唯一的。它们的创建方式如下
var setMut = mutableSetOf(1,3, 5, 2) val readSet = setOf(4,3,2)
每当您尝试重新分配一个不可变的对象时,您都会收到一个语法错误,指出 Val cannot be reassigned
。当您有一个永远不想被程序的任何部分编辑的集合时,此行为会派上用场。
函数
函数是良好形成的软件程序的基础。存储为函数的可重复代码位可以重复使用,而无需一遍又一遍地重写相同的命令。在 Kotlin 中,创建函数的标准语法是
fun doSomething(param1:String): Unit{
println("This function is doing something!");
}
此示例函数接受一个字符串作为唯一参数;正如您所看到的,参数类型放在参数名称之后。当函数不返回值时,Unit 对象是 Kotlin 等效于 Java 的 void(尽管 Unit 是一个值——并且只有一个值——因为它是一个单例)。 Kotlin 函数的工作方式与 Java 和其他一些语言中的函数非常相似。
类
Kotlin 中的类与其他面向对象编程 (OOP) 语言中的类非常相似,这些语言将对象/类视为基本构建块。类使用以下语法创建
class ExampleClass{}
默认情况下,类拥有一个主构造函数,可用于设置对象属性,而无需为 getter/setter(访问器/修改器)编写代码。这使得创建对象并开始使用它变得容易,而无需太多样板代码。主构造函数不能包含实现代码,只能包含参数
public class ExampleClass constructor(type:String)
要编写主构造函数实现,您可以在类中使用 init
init{
val internalType:String = type
}
或者您可以通过在每个参数前面放置 val
或 var
在构造函数中对其进行初始化
public class ExampleClass constructor(var type:String, var size:Int)
虽然这并没有深入探讨类、属性和可见性修饰符,但它应该让您开始在 Kotlin 中创建对象。
“主要”观点
Kotlin 文件的文件扩展名为 .kt
。要开始运行 Kotlin 文件,编译器会在文件中查找 main
函数;因此,一个基本的“Hello World”程序将如下所示
fun main(args:Array<String>){
println("Hello World")
}
简单易学,对吧?
Kotlin 是一种先进但直观的 OOP 语言,它简化和精简了移动设备、服务器端、Web 和数据科学应用程序的 Java 开发。我发现它的语法和配置比 Java 简单得多。
例如,比较 Java 中的 print
语句
System.out.println("Hi")
与 Kotlin 的语法对比
println("Hello")
此外,getter 和 setter 不需要额外的库即可进行简单实现。在 Java 中,像 Lombok 这样的库通过注解简化了类/对象属性设置。在 Kotlin 中,可以轻松实现具有属性的类
class Person {
var firstName: String =""
var lastName: String =""
var age: Int? = null
var gender: String? = null
}
可以使用以下语法检索或设置这些属性
var me = Person()
me.firstName = “Stephon”
me.lastName = “Brown”
Kotlin 的简洁性和 Java 互操作性意味着您花费时间学习无用的东西的风险很小。在迈出 Kotlin 的第一步之后,您可能再也不会以同样的方式看待您的 Java 代码或 JVM 了。
7 条评论