• 说明

 JDK版本:1.8

 开发工具:IntelliJ IDEA

 Github:https://github.com/Rushro2m/LearnKotlin

常量与变量
  • 常量

 定义:val 常量名(任意文字、长度不限)

 赋值:val 常量名 = 值

val salary = 5000
val π = 3.1415926
val age = 24

    fun main(args: Array<String>) {
        println("工资是:${salary}")
        println("π的值是:${π}")
        println("年龄是:${age}")
    }
  • 变量

 定义:var 变量名(任意文字、长度不限)

 赋值:var 变量名 = 值

var openTime = 5
var workTime = 10

fun main(args: Array<String>) {
    openTime = 6
    workTime = 12

    println("空调开放的时间是:${openTime}")
    println("每天工作的时间是:${workTime}")
}  
值的类型
  • 整数型

 整数,在Kotlin中称为Int类型的值

 形式:var 变量名:Int = 3

 由于Kotlin有类型推断,类型可以省略不写

 所以,也可以这么写:var 变量名 = 3

fun main(args: Array<String>) {
    var run: Int = 4
    val salary = 4000
    run = 6
    println("每天跑步${run}公里")
    println("每个月的工资是:${salary}元")
}
  • 浮点型

 浮点型,也就是小数类型。

 Kotlin中默认的浮点型是Double(双精度)。

 Double类型可以保存小数点后15/16位(如果第16位>=5,则保留16位,否则保留15位),Float可以保存小数点后7位,所以Kotlin中不推荐使用Float类型的小数。

fun main(args: Array<String>) {
    val pi: Double = 3.1415926535897932384626
    val a: Float = 3.333333364345353F
    println("圆周率是:${pi}")
    println(a)
}
  • 布尔类型

 布尔型:Boolean

 表示逻辑上的“真”或“假”

 只有2个值,true和false

 定义:val/var 常量名/变量名(:Boolean) = true/false

fun main(args: Array<String>) {
    var isVip = true
    if (isVip) {
        println("欢迎Vip会员")
    } else {
        println("还不赶紧充值")
    }
}
  • 元组类型

 元组(Tuple),给多个变量同时赋值,份儿元(Pair)和三元(Triple)

 可以对三个变量分别定义常量名/变量名,通过各自的常量名/变量名去调用数据,也可以定一个总的常量名/变量名,通过常量名/变量名的first,second,third去调用对应属性。

 一般情况下定义方法:

val/var (name1,name2) = Pair(data1,data2)</br>
val/var name = Pair(data1,data2)</br>
val/var (name1,name2,name3) = Triple(data1,data2,data3)
val/var name = = Triple(data1,data2,data3)

fun main(args: Array<String>) {
    val (day, month, year) = Triple(4, 9, 2017)
    val ming = Triple(15, "中学", "小明")
    val (desc, toll) = Pair("学费", 0)
    val hong = Pair(13, "小学")

    println("${year}年${month}月${day}日")
    println("姓名:${ming.third},学历:${ming.second},年龄:${ming.first}")
    println("小学${desc}是${toll}")
    println("姓名:${hong.first},学历:${hong.second}")
}
  • 可空类型

 代表变量没有值的情况

 如:用户资料的选填部分,如住址/性别等辅助信息

 形式:val/var 名称:类型?,无值则是null

fun main(args: Array<String>) {
    var address: String? = "北京市海淀区"
    var sex: Boolean? = null

    if (address != null) {
        println("您的地址是:${address}")
    }

    if (sex != null) {
        println("你的性别是:${sex}")
    }else {
        println("当前没有设置性别")
    }

    sex = true

    if (sex) {
        println("是男生")
    } else {
        println("是女生")
    }
}
  • 类型安全

 类型一旦定义,其类型不可更改

 即:不能给变量一个类型不同的值

//定义为Int型
var salary = 4000
//不能更改为Double型
salary = 4500.0
操作符
  • 数学操作符

 一般用于对于数之间的“+ - * / %”的操作

 赋值与数学操作符的组合“+= -+ *= /= %=”

var i = 10
var j = 4
i += j
println("结果是:${i}")
i -= j
println("结果是:${i}")
i *= j
println("结果是:${i}")
i /= j
println("结果是:${i}")
i %= j
println("结果是:${i}")
  • 比较操作符

 两个常量或者变量进行比较,返回值为true或者false“> <  >= <=”

var x = 10
var y = 11
var z = x > y
z = x >= y
z = x < y
z = x <= y

 返回值是true或者false

  • 逻辑操作符

 布尔值的组合,&&(与) ||(或) !(非)

//逻辑操作符
var haveComputer = true
var haveAvailable = true
var isEighteen = false

if (haveComputer && haveAvailable || isEighteen) {
    println("可以去上网")
} else {
    println("不可以去上网")
}

if (!haveComputer) {
    println("没有电脑")
} else {
    println("拥有电脑")
}
字符串和字符
  • 字符

 用Char类型来定义字符,一对单引号包括的值,为字符字面量

val aNum = '3'
val aLetter = 'a'

 判断字符是否为数字或者字符

//判断是否是数字
if (aNum.isDigit()) {
    println("aNum是一个数字")
}
//判断是否是字母
if (aLetter.isLetter()) {
    println("aLetter是一个字母")
}
  • 字符串

 字符串(String)是有序字符(Char)的集合

 包含在一对双引号中间的值,称之为字符串字面量

val course = "今天是周二"
val num = "1234567"

 判断字符串是否为空:isEmpty(),是否不为空:isNotEmpty(),包含的字符数量:count()

//是否为空
course.isEmpty()
//是否不为空
course.isNotEmpty()
//包含多少个字符
course.count()

 将字符串转换为字符数组:toCharArray():

//将course转换为字符数组,并循环打出每个字符
for (letter in course.toCharArray()) {
    println(letter)
}

 字符串模版:可以把各种变量组合成一个动态的字符串,在双引号内可以通过${}在其中填入常量、变量、表达式等。

val eventTime = Triple(6, 1, 3)
val company1 = "顺丰"
val company2 = "菜鸟"
val admin = "国家邮政局"
val newsTitle = "${eventTime.first}月${eventTime.second}日," +
        "${company1}大战${company2}正酣," +
        "${eventTime.third}日星夜,${admin}紧急叫停"
println(newsTitle)
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐