(一)Kotlin—基础语法
文章目录
- (一)Kotlin——基础语法
- 1. 变量
- 2. 运算符
- 2.1 算数运算符
- 2.2 位运算符
- 2.3 逻辑运算符
- 3. 流程控制
- 3.1 if-else
- 3.2 when
- 3.3 for
- 3.4 while
- 3.5 do-while
(一)Kotlin——基础语法
本教程不适合完全零基础的学习者,不会详细解释变量、类型、循环、条件判断等通用编程概念。它更适合已经有 Java 基础、正在快速入门 Kotlin 的用户。文档只保留常用语法和简单示例,帮助你快速建立 Kotlin 与 Java 之间的语法对应关系。
1. 变量
Kotlin 中变量主要分为两类:
| 关键字 | 含义 | 类比 Java |
|---|---|---|
val | 只读变量,赋值后不能重新赋值 | 类似final变量 |
var | 可变变量,可以重新赋值 | 普通变量 |
var变量名称:数据类型val变量名称:数据类型// 示例:vala:Int=10varb:Int=20b=30Kotlin 支持类型推断,能推断出类型时可以省略类型声明:
vala=10// 推断为 Intvalname="Tom"// 推断为 String整型:
| 类型 | 大小(位) | 最小值 | 最大值 |
|---|---|---|---|
Byte | 8 | -128 | 127 |
Short | 16 | -32768 | 32767 |
Int | 32 | -2,147,483,648 (-2^31) | 2,147,483,647(2^31-1) |
Long | 64 | -9,223,372,036,854,775,808 (-2^63) | 9,223,372,036,854,775,807(2^63 - 1) |
funmain(){valage:Int=18valcount=100valdistance:Long=10000000000Lprintln(age)// 18println(count)// 100println(distance)// 10000000000}浮点型:
| 类型 | 大小(位) | 符号与尾数位数 | 小数位数 |
|---|---|---|---|
Float | 32 | 24 | 6-7 |
Double | 64 | 53 | 15-16 |
funmain(){valprice:Double=19.99valscore:Float=98.5Fprintln(price)// 19.99println(score)// 98.5}布尔型:
| 类型 | 值 |
|---|---|
Boolean | true、false |
funmain(){valisLogin:Boolean=truevalisVip=falseprintln(isLogin)// trueprintln(isVip)// false}字符型:
| 类型 | 含义 | 示例 |
|---|---|---|
Char | 单个字符,使用单引号 | 'A'、'中' |
funmain(){valc:Char='A'println(c)// A}字符串类型:
| 类型 | 含义 | 示例 |
|---|---|---|
String | 字符串,使用双引号 | "Hello Kotlin" |
funmain(){vala=10valtext="这是拼接的值$a"// $ 是模板表达式,会把变量值拼接到字符串中valtext2="计算结果:${a+20}"// 表达式需要用 ${}println(text)// 这是拼接的值10println(text2)// 计算结果:30}2. 运算符
2.1 算数运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
+ | 加法 | a + b |
- | 减法 | a - b |
* | 乘法 | a * b |
/ | 除法 | a / b |
% | 取余 | a % b |
++ | 自增 | a++ |
-- | 自减 | a-- |
funmain(){vara=10valb=3println(a+b)// 13println(a-b)// 7println(a*b)// 30println(a/b)// 3println(a%b)// 1a++println(a)// 11}2.2 位运算符
Kotlin 没有 Java 中的<<、>>、&、|这类位运算符写法,而是使用函数形式。位运算只适用于Int和Long类型。
| Kotlin 写法 | 含义 | Java 类比 |
|---|---|---|
a shl b | 有符号左移 | a << b |
a shr b | 有符号右移 | a >> b |
a ushr b | 无符号右移 | a >>> b |
a and b | 按位与 | a & b |
a or b | 按位或 | `a |
a xor b | 按位异或 | a ^ b |
a.inv() | 按位取反 | ~a |
funmain(){vala=8// 二进制:1000valb=2println(ashlb)// 32println(ashrb)// 2println(aandb)// 0println(aorb)// 10println(axorb)// 10println(a.inv())// -9}2.3 逻辑运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
== | 判断值相等 | a == b |
!= | 判断值不相等 | a != b |
< | 小于 | a < b |
> | 大于 | a > b |
<= | 小于等于 | a <= b |
>= | 大于等于 | a >= b |
in | 判断是否在范围内 | x in 1..10 |
!in | 判断是否不在范围内 | x !in 1..10 |
&& | 逻辑与 | a > 0 && b > 0 |
| ` | ` | |
! | 逻辑取反 | !flag |
funmain(){vala=10valb=20valflag=trueprintln(a==b)// falseprintln(a<b)// trueprintln(ain1..10)// trueprintln(a>0&&b>0)// trueprintln(!flag)// false}3. 流程控制
Kotlin 中if、when、循环语句的基本思想和 Java 类似。如果分支或循环体只有一行代码,可以省略{};如果有多行代码,必须保留{}。
3.1 if-else
if(条件判断){条件成立时执行的代码}else{条件不成立时执行的代码}Kotlin 中if-else可以作为表达式使用,即可以直接返回结果。
funmain(){valscore=85valresult=if(score>=60){"及格"}else{"不及格"}println(result)// 及格}3.2 when
when类似 Java 中的switch,但功能更强,适合多分支判断。
when(目标){匹配值1->代码 匹配值2->代码else->代码}funmain(){vallevel=2valresult=when(level){1->"初级"2->"中级"3->"高级"else->"未知等级"}println(result)// 中级}when也可以判断范围:
funmain(){valscore=85valresult=when(score){in90..100->"优秀"in60..89->"及格"else->"不及格"}println(result)// 及格}3.3 for
for(遍历出来的单个目标变量in可遍历目标){循环体}funmain(){for(iin1..3){println("当前值:$i")// 当前值:1、当前值:2、当前值:3}}指定步长:
funmain(){for(iin1..10step2){println(i)// 1、3、5、7、9}}倒序遍历:
funmain(){for(iin10downTo1){println(i)// 10、9、8、7、6、5、4、3、2、1}}不包含结束值:
funmain(){for(iin0until5){println(i)// 0、1、2、3、4}}3.4 while
while先判断条件,条件成立才执行循环体。
while(循环条件){循环体}funmain(){vari=100while(i>0){println(i)// 100、50、25、12、6、3、1i/=2}}3.5 do-while
do-while会先执行一次循环体,再判断条件。因此不管条件是否成立,循环体至少执行一次。
do{循环体}while(循环条件)funmain(){vari=0do{println("Hello World!")// 输出 10 次 Hello World!i++}while(i<10)}✨✨✨
