Kotlin 全面学习之路 (一) -- 基本数据类型

在 Kotlin 中和 Java 一样,万物皆对象,我们可以调用任意变量的成员变量和属性。

1、数据类型

Kotlin 提供了以下数据类型:

类型 位宽
Byte 8
Short 16
Int 32
Float 32
Long 64
Double 64

字面值常量

  • 十进制: 123 、 长整型用 L 标记 -- 123L
  • 十六进制: 0x0F
  • 二进制: 00000001
  • 浮点型

    • 双精度浮点数(默认) – Double :123.6
    • 单精度浮点数 Float (使用 F 或 f 标记): 123.6f

    注意:不支持八进制

数值常量可以添加下划线 – 增加可读性(1.1 新版本特性)

val oneMillion = 1_000_000
val phoneNum = 183_8989_6767

2、字符

Kotlin 中用 Char 来表示,不可以直接用作数值

fun check(c: Char){
  if(c == 1){//这样的表示方法在 Kotlin 中是错误的
    ...
  }
}

一般字符使用单引号表示: 'c',
特殊字符使用反斜杠在转义:\t 、\b 、\n、 \r、 \'、 \"、 \\、 \$

在 Kotlin 中处理数值的方法基本和 Java 一样,但不完全相同,

  • 不会自动转型。
 val i: Int = 1
 val d: Double = i.toDouble()
  • 字符在 Kotlin 中不作为一个数字,如果需要的话需要手动进行转换
val c: Char = 'a'
val n: Int = c.toInt()
  • 位运算写法不同
//Java 
int or = FLAG1 | FLAG2
int and = FLAG1 & FLAG2

//Kotlin
val or = FLAG1 or FLAG2
val and = FLAG1 and FLAG2

操作符:

shl(bits) – 有符号左移 (相当于 Java << )
shr(bits) – 有符号右移(相当于 Java>> )
ushr(bits) – 无符号右移 (相当于 Java >>> )
and(bits) – 按位与
xor(bits) – 按位异或
inv(bits) – 按位翻转

3、布尔值

和 Java 一样,在 Kotlin 中布尔值只有 truefalse 两个值,但是其表示方法略有不同为:Boolean

4、数组 – Array

Kotlin 中数组用 Array 表示 ,其本身有 setget 方法、size 属性以及其他常用函数:

扫描二维码关注公众号,回复: 3256271 查看本文章
class Array<T> private constructor() {
val size: Int
operator fun get(index: Int): T
operator fun set(index: Int, value: T): Unit
operator fun iterator(): Iterator<T>
// ...
}

可以使用库函数 arrayOf()arrayOf(1,2,3) 来构建一个数组,也可以使用 arrayOfNulls() 来构建一个 空数组。另外一种构建数组的方式:使用工厂函数 – 接受一个数组大小的参数 i 以及一个根据给定索引 i 创建数组元素的函数,举个例子如下

// 创建一个 Array<String> 内容为 ["0", "1", "4", "9", "16"]
val asc = Array(5, {i -> (i * i).toString() })

注意: 在 Kotlin 中 Array 是不可变得,意味着 Kotlin 中 Array 转型 Array 的操作是非法的。

同时 Kotlin 中还存在基本数据类型的专有数组:ByteArray、IntArray 等,这就避免了过度装箱,而且这些类与 Array 没有继承关系,但是他们拥有相同的库函数。

5、字符串 – String

像 Java 中一样, Kotlin 中的字符串同样使用 String 表示,字符串的元素也可以通过索引读取: str[i]

for(s in str){
  println(s)
}

字符串字面值

Kotlin 有两种类型的字符串字面值:一种是可以带转义符的,一种是可以包含新行
以及任意文本的。

  • 带转义符的 string 很像 java 的 string:
    val s = "Hello World!\n"
    转义是使用传统的反斜线的方式。
  • 整行String 是由三个引号包裹的( “”” ),不可以包含转义符但可 以包含其它字符:
val text = """
for (c in "foo")
print(c)
"""

你可以通过 trim-margin() 函数移除空格:

val text = """
|Tell me and I forget.
|Teach me and I remember.
|Involve me and I learn.
|(Benjamin Franklin)
""".trimMargin()

默认采用 | 标注起始前缀,也可以传递其它的字符做起始前缀,比
trimMargin(">")

字符串模板

字符串可以包含模板表达式,即可求值的代码片段,并将其结果连接到字符串中。
表达式以 $ 开始,可以为一个简单的变量名:

val i = 10
val s = "i = $i"

或者可以为一个包含在大括号中的任意表达式:

val s = "str"
val str = "s.length is ${s.length}"

猜你喜欢

转载自blog.csdn.net/Strange_Monkey/article/details/82350736