- Kotlin 常量和变量
- Kotlin 数据类型
- Kotlin 运算符
- Kotlin 流程控制语句
Kotlin的常量和变量
在Kotlin中,常量必须用val关键字来声明,而变量必须用var关键字来声明
var intType:Int = 15
val floatType:Float = 15f
在上上述声明中,var和val是必选参数,而且是二选一的
常量
常量的值是不可改变的,即常量被定义后,在程序的任何地方都不能改变它的值,在其他编程语言中
对常量名有一定的限制,但是在Kotlin中常量名不在局限于英文字母,下划线和数字,还可以是中文文字,
虽然对Kotlin的常量名没有过的的限制,但是我们在给常量命名时要做到见名知意。
val a:Int = 10
fun main(args: Array<String>){
printIn(a)
}
上述代码为定义一个常量并输出,如果对常量a进行变更如a = a+1时,会编译报错
变量
变量的值是可以被改变,它没有固定的值,即变量被定义后,在程序的任何地方都可以改变它的值。变量的值离程序结果最近,即位该变量的最终值。
var v1:String = "Kotlin"
var v2:Int?
var v3:Int = 10
var v4 = 5
set(value){
if(value <= 5)
field = value
}
fun main(args: Array<String>){
printIn(v1)
printIn(v3)
v4 = 5+5
printIn(v4)
}
以上代码的输出结果为
Kotlin
10
5
因为重写了v4的set方法所以v4的值没有更改
Kotlin的数据类型
Kotlin的最基本元素是数字和字符
在Kotlin编程语言中有两种数据类型:基本数据类型和引用数据类型
- 基本数据类型包括:布尔类型(Boolean)、数值类型(Number)、字符类型(Char)
- 引用数据类型包括:可空类型(Null)、对象类型(Object)和数组类型(Array)
布尔类型(Boolean)
布尔类型是常见的数据类型,与java相同只有true和false两个值
//这便是声明一个布尔类型的常量
val boo:Boolean = true
数值类型
数值类型包括整型和浮点型
- 整型:包含最小的16位的short类型,最常见的32位int类型和最大64位长整型long
- 浮点型:包含64位双精度浮点型double类型和32位的float类型
- 字节类型其实也属于数值类型,8位,只是在程序中很少会使用到这种数据类型,它一般用于数据流的数据记载
//kotlin的int定义,以下为一个变量,var后是变量名,冒号之后为变量的数据类型定义
var intType:Int = 15
//kotlin的double定义,以下为一个变量,var后是变量名,冒号之后为变量的数据类型定义
//注:double类型的值为小数
var doubleType:Double = 1.0
//kotlin的float定义,以下为一个变量,var后是变量名,冒号之后为变量的数据类型定义
//注:Float类型的值后要加 f 或大写 F
var floatType:Float = 1f
//kotlin的short定义,以下为一个变量,var后是变量名,冒号之后为变量的数据类型定义
var shortType:Short = 12
//kotlin的long定义,以下为一个变量,var后是变量名,冒号之后为变量的数据类型定义
var longType:Long = 1
以上是Kotlin中一些数值类型的简单定义
字符类型
字符常量是由一对单引号围起来的单个字符,可以是16位的Unicode字符集中的任意字符
//这就是Kotlin中,字符类型的常量声明
val char:Char = 'a'
字符串类型
字符串是连续的字符序列,由数字、字母和字符组成。在Kotlin中字符串有两种字面值,转义字符串可以是转义字符,原生字符串可以包含换行和任意文本,转义字符同样需要用反斜线的方式来著名,原生字符串需要三个引号分界符括起来。
//字符串和java相同用String表示
val char:String = "Hello Kotlin"
注: 字符串可以包含模板表达式,并且可以求值,并把结果合并到字符串中。
模板表达式一般以“$”符号开头,后面跟着变量名,如 $name,或用大括号,如 ${a+b}
元组类型
Kotlin中的元组类型是一种简单的类型,它可以把不同类型的值组合在一起,组成元组的数据就被称为“元素”。Kotlin中的元组分为二元元组和三元元组。
可空类型
在编程开发过程中,经常会碰到变量为空值的情况,如果该变量是引用类型的,那么它的设置就是Null,如果是值类型,那么在不使用可空类型的情况下,会和Java一样抛出空值的异常。为了避免发生这种情况,Kotlin中可以创建一个可空类型的变量。
//可空类型,可以赋值为null
//可空类型要在数据类型后加“?”
var name:String? = null;
对象类型
对象类型是存储数据和有关如何处理数据的数据类型。在Kotlin中必须明确声明对象,首先声明对象的类,类是包含属性和方法的结构。声明对象和Java相同,使用class关键字。使用该对象时,首先要进行实例化,然后才能使用对象中的成员属性和方法。
class course(var name:String){
init{
println{"您选择的课程名称为:${name}"}
}
}
fun main(args:Array<String>){
val stu = course("Kotlin")
}
以上代码运行结果为:您选择的课程名称为:Kotlin
数组类型
数组是具有相同类型的变量的集合,这些变量具有相同的标识符,即数组名:数组中的每一个变量都称为元素。要引用数组中的特定元素,通常使用数组名加上一个中括号括起来的整型表达式来表示,该表达式被称为数组的索引或下标。
在Kotlin中,数组位于Array类中,由get和set函数、size属性以及其他成员函数表示。
注 Kotlin中的数组是不变的,这意味着Kotlin没有给Array< Sting>分配到Array< Any>,但是Kotlin为了避免这种情况的发生,可以直接使用Array< out Any>。
Kotlin数据类型的检查和转换
无论是强类型的编程语言还是弱类型的编程语言,都会进行类型转换,Kotlin提供了5种数据类型的转换方式,即智能转换、不安全转换、安全转换、显式转换和隐式转换。
- 智能转换:在Kotlin中不需要使用转换操作符进行操作,因为编辑器会跟踪不可变值的 is 来进行检查,并且在需要时会自动插入进行安全转换。虽然编辑器可以自动识别数据类型,但有一定局限性——无法识别被 open 关键字修饰的属性,或者是自定义 getter 属性的 val 值;无法识别被修改的 var 局部变量;var 变量是永远无法识别的,因为该变量随时都在被其他代码更改。
- 不安全转换:通常可以进行转换,但是如果碰到不可能被转换的情况或者为 Null 值时,则会抛出异常,不建议转换。
- 安全转换:为了避免不安全转换抛出异常,可以使用安全操作符 as?。
- 显示转换:因为不能将较小的数据类型隐式转换为较大的类型,这就意味着程序无法继续执行,所以每个数字都支持进行类型转换。
- 隐式转换:在运算的过程中进行转换。
注:数字转函数表
函数 | 示例 | 说明 |
---|---|---|
toByte() | var a= 10 a.toByte() | 转换字节 |
toShort() | var a= 10 a.toShort() | 转换短整型 |
toInt() | var a= 10 a.toInt() | 转换整型 |
toLong() | var a= 10 a.toLong() | 转换长整型 |
toFloat() | var a= 10 a.toFloat() | 转换浮点型 |
toDouble() | var a= 10 a.toDouble() | 转换双精度浮点型 |
toChar() | var a= 10 a.toChar() | 转换字符型 |
Kotlin的运算符
运算符是用来对变量、常量及数据进行计算的符号,可以使用运算符对一个值或者一组值执行指定的操作。Kotlin中的运算符包括有算数运算符、关系运算符、逻辑运算符、赋值运算符等。在Kotlin中还提供了位运算符函数来进行位运算。
算数运算符
算数运算符通常在数字处理中,对数值类型的数据进行运算。Kotlin中的算数运算符分为一元运算符和多元运算符。
算数运算符 | 说明 | 示例 |
---|---|---|
+ | 加法 | a + b |
- | 减法 | a - b |
* | 乘法 | a * b |
/ | 除法 | a / b |
% | 取余 | a % b |
++ | 递增 | a++或++a |
-- | 递减 | a--或--a |
关系运算符
关系运算符用于对两个表达式进行比较,返回布尔类型的结果 true 或 false。关系运算符一般在条件或循环的语句中起着重要的控制作用。
算数运算符 | 说明 | 示例 |
---|---|---|
< | 小于 | a < b |
> | 大于 | a > b |
<= | 小于或等于 | a <= b |
>= | 大于或等于 | a >= b |
== | 等于 | a == b |
!= | 不等于 | a != b |
=== | 恒等 | a === b |
!== | 非恒等 | a !== b |
逻辑运算符
逻辑运算符用于连接关系表达式,,对关系表达式的值进行逻辑运算。虽然逻辑运算符 && 对应于 and,|| 对应于 or ,但是它们的优先级不同。
算数运算符 | 示例 | 结果为真 |
---|---|---|
&& 或 and | a & b 或 a and b | a 和 b 都为真 |
|| 或 or | a || b 或 a or b | a 和 b至少有一个为真 |
xor(逻辑异或) | a xor b | a 和 b 为一真一假 |
!(逻辑非) | !a | a为假 |
赋值运算符
“=” 符号是最简单的赋值运算符,其左边是变量,右边是条件表达式。表达式结果的类型和左边变量的类型一致,或者能转换成左边变量的数据类型。
赋值运算符可以和二元算数运算符、逻辑运算符和位运算符组合成简捷运算符,从而简化一些常用表达式的写法。
算数运算符 | 说明 | 示例 | 展开形式 | 说明 |
---|---|---|---|---|
= | 赋值 | a = b | a = b | 将右边的值赋给左边 |
+= | 加 | a += b | a = a + b | 将右边的加到左边 |
-= | 减 | a -= b | a = a - b | 将右边的减到左边 |
*= | 乘 | a *= b | a = a * b | 将右边的值乘到左边 |
/= | 除 | a /= b | a = a / b | 将右边的值除到左边 |
% | 取余 | a %= b | a = a % b | 将左边的值对右边取余数 |
位运算符
虽然Kotlin没有像其他编程语言一样提供位运算符,但是在Kotlin编程中位运算同样重要,所以Kotlin官方给我们提供了特定的函数对 Int 和Long 类型的数据进行位运算。