kotlin语法(上)
C:\Users\hushaoren>kotlinc -version info: kotlinc-jvm 2.2.20 (JRE 24.0.2+12-54)
1.2 IDEA的安装
---这里推荐使用IntelliJ IDEA
---打开IntelliJ IDEA,创建一个 kotlin项目,自动在src目录下生成一个Main.kt的文件,代码如下:
fun main() { val name = "Kotlin" //TIP 当文本光标位于高亮显示的文本处时按 <shortcut actionId="ShowIntentionActions"/> // 查看 IntelliJ IDEA 建议如何修正。 println("Hello, " + name + "!") for (i in 1..5) { //TIP 按 <shortcut actionId="Debug"/> 开始调试代码。我们已经设置了一个 <icon src="AllIcons.Debugger.Db_set_breakpoint"/> 断点 // 但您始终可以通过按 <shortcut actionId="ToggleLineBreakpoint"/> 添加更多断点。 println("i = $i") } }
--可以看到Kotlin 文件以 .kt 为后缀
--val与var声明的区别:
--val:不可变变量(相当于Java中的final),初始化后不可修改,必须在声明时或构造器中完成初始化,是线程安全的,无需担心并发修改问题。
--var:可变变量,支持多次修改,适用于需要动态更新的场景,需注意多线程环境下的数据一致性。
1.3 包
下图是创建一个Infra基础设施包,包中创建了一个Utils.kt的文件,这个文件中定义了多个类,如FileUtils类等

下面是在Mian.kt文件中导入Infra包,调用该包中的FileUtils类,如下所示
import Infra.* fun main() { val fu= FileUtils()
二.数据类型
2.1 数据类型定义
class BaseDataType { // Byte: 8 位,范围从 -128 到 127。 val byteValue:Byte = 127 //Short: 16 位,范围从 -32,768 到 32,767 val shortValue:Short = 32767 //Int: 32 位,范围从 -2^31 到 2^31 - 1 val intValue:Int = 2147483647 //Long: 64 位,范围从 -2^63 到 2^63 - 1 val longValue:Long = 9223372036854775807L // float浮点数类型 val floatValue:Float = 3.14F // double浮点数类型 val doubleValue:Double = 3.141592653589793 // 字符类型 val charValue:Char = 'A' // 布尔类型 val booleanValue:Boolean = true // 字符串类型 val stringValue: String = "Hello, Kotlin!" // 数组类型 val intArray: IntArray = intArrayOf(1, 2, 3, 4, 5) val longArray: LongArray = longArrayOf(1, 2, 3, 4, 5) val floatArray: FloatArray = floatArrayOf(1.0f, 2.0f, 3.0f) val doubleArray: DoubleArray = doubleArrayOf(1.0, 2.0, 3.0) val charArray: CharArray = charArrayOf('A', 'B', 'C') val booleanArray: BooleanArray = booleanArrayOf(true, false, true) val stringArray: Array<String> = arrayOf("a", "b", "c") fun display(){ // println: Byte Value: 127 println("Byte Value: $byteValue") //println: Int Array: 1, 2, 3, 4, 5 println("Int Array: ${intArray.joinToString()}") //println: String Array: a, b, c println("String Array: ${stringArray.joinToString()}") } }
长整型以大写的 L 结尾:123L
16 进制以 0x 开头:0x0F
2 进制以 0b 开头:0b00001011
注意:8进制不支持
2.2 数据类型比较
比较两个数字: ==、!=、<、>、<= 和 >=
类型转换:比较不同数据类型时会自动进行类型转换。例如:a 是 Int 类型,而c是Double类型,Kotlin会自动将a转换为Double类型进行比较。
相等性:Kotlin 中 == 是值的比较,而 === 是引用相等性比较,即对象是否是同一个实例。
2.3 类型转换
不能进行显式转换,如将Byte类型值赋给一个 Int 变量
val b: Byte = 1 val i: Int = b // 错误 //正确方法使用toInt() val i: Int = b.toInt() //ok
有toByte()、toShort()、toInt()、toLong()、toFloat()、toDouble()、toChar()
2.4 布尔
常用的 && 与、 || 或、 ! 逻辑非
2.5 字符串模板
模板表达式以美元符($)开头,如println("Int Array: ${intArray.joinToString()}")
三. 条件控制
3.1 if表达式
基本语法与java、c#一样, 语法糖有如下写法
可以把 IF 表达式的结果赋值给一个max变量如下所示:
val max = if (a > b) { print("Choose a") a } else { print("Choose b") b }
也不需要像Java那种有一个三元操作符,简写如下:
//三元表达式格式语法 val c = if (condition) a else b // 三元表达式 var a = 1 var b = 2 val c = if (a>=b) a else b //C#格式 int c= a>=b ? a: b
使用区间 in 运算符来检测某个数字是否在指定区间内,区间格式为 x..y
val x = 5 val y = 9 if (x in 1..8) { println("x 在区间内") } //输出结果为:x 在区间内
3.2 when表达式
//When相当于java、c#的switch,when里面的else相当于switch中的default val x: Int=1 when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { // 注意这个块 print("x 不是 1 ,也不是 2") } } //输出:x == 1
//检测一个值在(in)或者不在(!in) val x: Int=5 when (x) { in 1..10 -> print("x is in the range") !in 10..20 -> print("x is outside the range") else -> print("none of the above") } //输出 x is in the range
//多个分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔 val x:Int=1 when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("otherwise") } //输出:x == 0 or x == 1
//is一个特定类型的值 val x:Int=10 val value=when (x) { is Int ->x-5 else -> print("otherwise") } println(value)//输出:5
四.循环控制
4.1For循环 格式:for (item in collection) print(item)
//获取集合项中的每个值 val items = listOf("apple", "banana", "kiwi") for (item in items) { println(item) } //获取集合项中索引,从0开始 for (index in items.indices) { println("item at $index is ${items[index]}") }
4.2 while 与do while循环
与java、c#语法一样
//while循环,在里面每次减一 输出5,4,3,2,1 var x = 5 while (x > 0) { println(x--) } //do while循环在里面每次减一 输出5,4,3,2,1 var y = 5 do { println(y--) } while(y>0)
4.3 返回和跳转
continue与break的用法与java\c#一样
//输出1,2,3,4,5,6 for (i in 1..10) { if (i==3) continue // i 为 3 时跳过当前循环,继续下一次循环 println(i) if (i>5) break // i 为 6 时 跳出循环 }
浙公网安备 33010602011771号