网站首页 > 教程文章 正文
变量声明
Kotlin使用var声明变量,使用val声明不可被更改的变量,变量和类型之间使用:分割。比如:
var name: String = "lxj"
var age: Int = 10
val city = "武汉"
city = "北京" //编译报错
Kotlin有强大的类型推断系统,能够根据变量的值推断出变量的类型,所以类型经常可以省略不写:
var name = "lxj"
var age = 10
数字型
Kotlin的数字类型和Java非常像,提供了如下几种类型来表示数字:
Type | Bit width |
Byte | 8 |
Short | 16 |
Int | 32 |
Long | 64 |
Float | 32 |
Double | 64 |
我们可以用字面量来定义这些数据类型:
val money = 1_000_000L //极具可读性
val mode = 0x0F //16进制
val b = 0b00000001 //byte
val weight = 30.6f
Kotlin还提供了这些数据类型之间相互转换的方法:
println(1.toByte())
println(1L.toInt())
println(1f.toInt())
字符和布尔
Kotlin的字符和布尔,与Java一样。
var c = 'A'
var isLogin = false
数组
数组在Kotlin中用Array表示,一般我们这样创建数组:
val arr = arrayOf(1, 2, 3)
arr[0] //获取第0个元素
arr.size //数组的长度
arrayOf("a", "b").forEach { //遍历数组并打印每个元素
println(it)
}
Kotlin的Array比Java的Array强大太多,支持很多高阶函数,功能几乎和集合一样;高阶函数的部分在后面的集合章节有更详细的讲述。
字符串
字符串类型是String,用双引号""表示:
val s = "abc"
s[0]
s.length
s.forEach { println(it) }
Kotlin的字符串是现代化的字符串,支持原始字符串(raw string),用三个引号包起来:
println("""
床前明月光,疑是地上霜;
举头望明月,低头思故乡。
""".trimIndent()) //字符串的内容会原样输出
同时Kotlin还支持字符串插值,可以将变量的值插入到字符串中:
var name = "李晓俊"
var age = 20
println("大家好,我叫$name,我今年${age}岁了。")
区间
区间(Range)严格来说不属于基本类型,但重开一篇又感觉杀鸡焉用牛刀,所以就放在这了。
区间是用来表示范围的数据类型,比如从1到5,从A到B。它写起来非常简单,要表示从1到5的范围,可以这样写:
var range = 1..5
var range2 = 'A'..'E'
它还有函数形式的写法是1.rangeTo(5),它们是等同的,但1..5形式看起来简洁,使用得比较多。
区间实现了Iterable接口,所以是可迭代可遍历的,可以使用for..in或者forEach来遍历它:
for (i in 1..5){
println(i)
}
(1..5).forEach {
println(it)
}
默认情况下区间是闭区间,也就说1..5是包含1-5的所有值,如果不想包含末尾值,可以使用until关键字实现:
for (i in 1 until 5){
println(i) //将不会打印出5
}
区间遍历时,值是一步一步向上增长,如果希望每次走2步,可以使用step关键字实现:
for (i in 1..5 step 2){
println(i) //将会打印出1,3,5
}
默认的区间是递增遍历,如果你需要一个递减遍历的区间,可以使用downTo做到:
for (i in 5 downTo 1 step 2){
println(i) //将会打印出5,3,1
}
猜你喜欢
- 2025-03-23 五年后,谷歌还在全力以赴发展 Kotlin
- 2025-03-23 精通Kotlin协程:异常处理与取消技巧
- 2025-03-23 编程语言Kotlin 2.0.0现已发布,K2编译器进入稳定状态
- 2025-03-23 都2023年了,来聊聊Kotlin 的Lazy属性
- 2025-03-23 kotlin和java开发哪个好,优缺点对比
- 2025-03-23 Kotlin基本语法(kotlin语言教程)
- 2025-03-23 Kotlin 2.0.0 发布:性能提升,大语言模型来助力
- 2025-03-23 两年外包公司经验,拿到字节跳动offer,我的付出不止一点点
- 2025-03-23 Kotlin与Java的不同之处(kotlin vs java)
- 2025-03-23 超干货详解:kotlin(4) java转kotlin潜规则
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)