Kotlin从零开始:变量,基本类型和数组

Kotlin是一种现代编程语言,可编译为Java字节码。 它是免费和开源的 ,并有望使Android编码更加有趣。

Kotlin可与Java 100%互操作。 换句话说,它可以与Java在同一项目中一起使用。 因此,您可以将Java代码的一部分重构为Kotlin,并且不会中断。 除此之外,它简洁,富有表现力,并且具有出色的工具。 Kotlin可以在后端(服务器端)上使用,但是作为Android应用程序开发的一种语言,它现在正受到很多关注。 谷歌现在已经将Kotlin作为一流的Android开发语言来支持,因此Kotlin的受欢迎程度将激增!

在Kotlin From Scratch系列的第一个教程中,您将学习语言的基础知识:注释,变量,简单类型,数组和类型推断。

先决条件

要与我一起学习,您将需要Android Studio上Kotlin插件 。 或者,您可以使用在线游乐场IntelliJ IDEA社区版

1.变量

在Kotlin中,使用val声明常量或使用var关键字声明变量。 您可以在变量名称后面指定诸如StringInt类的类型。 在下面的示例中,我们使用val关键字声明了String类型的常量firstName

val firstName: String = "Chike"

但是您很快就会意识到,在Kotlin中,通常可以从声明中省略类型,并且编译器不会抱怨。

val lastName = "Mgbemena" // will still compile

在上面的代码中,您将看到我们没有明确声明String类型。 上面的代码仍然可以使用,因为编译器已使用类型推断隐式地推断了类型。 我们将回到这个!

valvar关键字的区别在于,前者是不可变的或只读的(其值不能更改),而后者是可变的(其值可以更改)。

val dateOfBirth = "29th March, 1709" 
dateOfBirth = "25th December, 1600" // cannot be changed

var car = "Toyota Matrix"
car = "Mercedes-Maybach" // can be changed

请注意,对于使用var关键字声明的变量(其类型由编译器推断),分配其他类型的值将不起作用。 换句话说,变量的值可以更改,但其类型不能更改! 例如:

var age = 12
age = "12 years old" // Error: type mismatch

强烈建议您先使用val关键字声明变量,使变量不可变,以免保持过多状态。 这使您的代码对于多线程更安全,因为它确保变量不会被其他线程意外修改。

关于val关键字,您应该了解的另一件事是,您只能使用类型声明它,并在以后为其分配值。 但是您仍然只能分配一次值。

val carName: String
carName = "Toyota Matrix" // will compile

在Java中,可以在一行上声明多个相同类型的变量,但这在Kotlin中不起作用。 在Kotlin中,所有变量声明都必须单独显示。

val carName = "BMW", streetName = "Oke street" // this won't compile

// this will compile
var carName = "BMW"
var streetName = "Oke street"

2.类型推断或推论

Kotlin是一种强类型语言,支持类型推断或推论。 这是编译器用来从上下文中找出类型的机制。 Java没有类型推断机制,这意味着您必须显式声明每个函数或变量的类型。 类型推断有助于减少您必须编写的样板代码。

val country = "Nigeria" // type is inferred by compiler
val code = 234

即使我们没有明确声明变量国家的类型,上面的代码也可以编译。 编译器足够聪明,可以知道国家/地区的类型为String ,因为值“ Nigeria”是字符串。

3.基本类型

在Java中,我们有两种类型:基本类型(例如int,long,boolean,byte,char等)和引用类型(例如array, String )。 Java使用包装器(如java.lang.Integer )使基本类型的行为类似于对象。 但是在Kotlin,没有这种区别。 相反,所有类型都是对象。

号码

Kotlin中可用的整数类型为:

  • Long 64位
  • Int —32位
  • Short 16位
  • Byte — 8位

浮点类型为:

  • Double 64位
  • Float 32位
val myInt = 55
val myLong = 40L
val myFloat = 34.43F
val myDouble = 45.78
val myHexadecimal = 0x0F
val myBinary = 0b010101

您可以观察到,我们通过添加后缀L创建了Long字面量,对于Float我们添加了后缀Ff 。 数字也可以使用0x0X前缀以十六进制表示法写入,并使用0b0B前缀以二进制形式写入。 请注意,在所有这些情况下,Kotlin都可以使用类型推断来知道我们想要的类型。

val myLong = 19L
val myLongAgain: Long = 40

要将数字从一种类型转换为另一种类型,必须显式调用相应的转换函数。 换句话说,数字类型之间没有隐式转换。

val myNumber = 400
val myNumberAgain: Long = myNumber // throws Error: Type mismatch

每种数字类型都有一些辅助函数,这些函数可以从一种数字类型转换为另一种数字: toByte()toInt() toLong()toFloat() toDouble()toChar()toShort()toChar()toShort()

val myInt = 987
val myLong = myInt.toLong()

在上面的代码中,我们正在从整数转换为long。 我们也可以通过在long变量上使用toInt()方法来进行相反操作。 请注意,如果需要的话,这将截断该值以适合较小的Int类型—在从较大的类型转换为较小的类型时要格外小心!

您还可以将String转换为数字类型。

val stringNumber = "101"
val intValue = stringNumber.toInt()

在上面的代码中,我们通过在变量上调用方法toInt()将变量stringNumber转换为Int类型。 通过代替直接在字符串上调用方法,我们可以更简洁地编写此代码:

val intValue = "101".toInt()

布尔类型

Kotlin中的Boolean类型与Java中的Boolean类型相同。 其值可以为true或false。 像Java一样,可以对布尔类型执行除法运算( || ),合取运算符( && )和否定运算符( ! )。

val myTrueBoolean = true
val myFalseBoolean = false

val x = 1
val y = 3
val w = 4
val z = 6

val n = x < z && z > w // n is true

弦乐

可以使用双引号或三引号创建字符串。 除此之外,转义字符可以与双引号一起使用。

val myString = "This is a String"
val escapeString = "This is a string with new line \n"

为了在源文件中创建一个跨越多行的字符串,我们使用三引号:

val multipleStringLines = """
        This is first line
        This is second line
        This is third line """

Kotlin还支持字符串插值或字符串模板。 这比建立连接更容易,因为它是建立动态字符串的方法,而串联是我们在Java中使用的方法。 使用字符串模板,我们可以将变量和表达式插入字符串中。

val accountBalance = 200
val bankMessage = "Your account balance is $accountBalance" // Your account balance is 200

在上面的代码中,我们创建了一个字符串文字,并且在其中,我们通过在变量名称前面使用$字符来引用变量。 请注意,如果变量不正确或不存在,则代码不会编译。

如果需要在字符串中使用$怎么办? 您只需使用\$转义即可! 另外,您可以直接从插值的String调用方法。 您必须添加大括号${}来包装它。

val name = "Chike"
val message = "The first letter in my name is ${name.first()}" // The first letter in my name is C

您可以做的另一很酷的事情是在创建String文字时在花括号内执行一些逻辑。

val age = 40
val anotherMessage = "You are ${if (age > 60) "old" else "young"}" // You are young

数组

在Kotlin中,有两种创建数组的主要方法:使用辅助函数arrayOf()或构造函数Array()

arrayOf()函数

例如,让我们使用arrayOf()创建一个包含一些元素的数组。

val myArray = arrayOf(4, 5, 7, 3)

现在,要访问任何元素,我们可以使用其索引: myArray[2] 。 请注意,我们可以将不同类型的值作为参数传递给arrayOf() ,它仍然可以工作-它是混合类型的数组。

val myArray = arrayOf(4, 5, 7, 3, "Chike", false)

为了强制所有数组值具有相同的类型,例如Int ,我们通过调用arrayOf<Int>()intArrayOf()声明类型。

val myArray3 = arrayOf<Int>(4, 5, 7, 3, "Chike", false) // will not compile
val myArray4 = intArrayOf(4, 5, 7, 3, "Chike", false)  // will not compile

我们还有其他实用程序函数来创建其他类型的数组,例如charArrayOf()booleanArrayOf()longArrayOf()shortArrayOf()byteArrayOf()等。 在幕后,使用这些函数将创建各自的Java基本类型的数组。 换句话说, intArrayOf()将编译为常规Java基本类型int[]byteArrayOf()将为byte[]longArrayOf()将为long[] ,依此类推。

Array()构造函数

现在让我们看看如何使用Array()创建一个数组。 此类的构造函数需要一个大小和一个lambda函数。 在本系列的后面部分,我们将学习更多关于lambda函数的信息,但是到目前为止,您只需了解这是一种声明匿名函数的简单的内联方式即可。 在这种情况下,lambda函数的工作是使用元素初始化数组。

val numbersArray = Array(5, { i -> i * 2 })

在上面的代码中,我们在第一个参数中传递了5作为数组的大小。 第二个参数接受一个lambda函数,该函数获取数组元素的索引,然后返回要在数组中该索引处插入的值。 因此,在上面的示例中,我们创建了一个包含元素0、2、4、6和8的数组。

4.评论

这是个简单的。 在Kotlin中,注释与Java中的注释相同。 我们可以使用块或行注释:

/*
 hello, this is a block comment
 with multiple lines.
 This is another line.
 This is another one again
*/

// this is a single line comment

结论

在本教程中,您学习了Kotlin编程语言的基础知识:变量,基本类型,类型推断,数组和注释。 在Kotlin From Scratch系列的下一篇教程中,您将了解Kotlin中的循环,范围,条件,集合和包。 再见!

翻译自: https://code.tutsplus.com/tutorials/kotlin-from-scratch-variables-basic-types-arrays-type-inference-and-comments--cms-29328

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值