Kotlin 学习--语言基础

Kotlin 学习–语言基础


申明变量

var和val
var:变量申明,可变,表示这个变量可以多次赋值
val:变量声明,不可变,类似java中final定义的变量,只读,当被赋值之后就不能再赋值

fun testVariable(){
    var a = 1 //var 定义的变量是可以多次赋值的
    a = 3 //重新赋值
    println(a)
    var x = 5
    x+=1
    println("x = $x")//串模板 串可以包含模板表达式,即:可计算的代码片段,其结果链接到串中。模板表达式以美元符号($)开始,和简单的名字构成:

    val l = "kotlin" //val定义的是一旦被赋值之后就不能再赋值,类似java的final
//    l = "string" //编译器报错:val cannot be reassigned
    println(l)
    val j:Int = 1 //立即赋值
    val i = 1 //自动推断出类型
    val u : Int //没有赋值,得先确认类型
    u = 3
    println("j:$j===i:$i===u:$u")
}

编译结果

3
x = 6
kotlin
j:1===i:1===u:3

控制语句

1、if语句

在kotlin中的if语句和java中的还是有很大的区别,在kotlin中更加灵活,不当可以实现java的写法外,还能实现表达式(三元运算符),以及作为一个块的运用。

1.1与java一样的写法
var flag = 3
if (tag == flag){
    println("$flag == $tag--->true")
}else{
    println("$flag == $tag--->false")
}
1.2 kotlin中的三元运算符

其实在kotlin中并没有存在三元运算符(condiution?then:else)这种操作的。只是因为if语句的特性(if表达式会返回一个值),所以不用三元运算符,或者说可以当做三元运算符

var flag = 3
//在kotlin中直接用if...else...代替
var num = if(flag > 3) 3 else 5
println("num--->$num")

num--->5

由上可知,kotlin的if可以作为一个表达式并返回一个值

1.3作为一个块,并且最后一句为返回的值
var flag = 3
var numA = if (flag <3){
    flag = 10
    println("numA < 3 is true")
    flag
}else if (flag == 3){
    flag = 20
    println("numA = 3 is true")
    flag
}else{
    flag = 30
    println("numA > 3 is true")
    flag
}
println("numA ---> $numA")

numA = 3 is true
numA ---> 20

2、when语句

when 将它的参数和所有的分支条件顺序比较,直到某个分支满足条件。
when 既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式,符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值。
when不仅可以替代Java的switch,还比之强大许多,让我们往下看:

2.1 看先简单的替代switch
var tag = 3
when(tag){
    1 -> print(1)
    2 -> print(2)
    else -> println("else")//这里的else就是switch中的default
}

else
2.2 如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔(相当于把switch中的bread去掉):
var tag = 3
when(tag){
    1 -> print(1)
    2 -> print(2)
    3,4 -> println("tag等于3或者等于4")
    else -> println("else")
}

tag等于3或者等于4
2.3 in运算符
  • 我们也可以检测一个值在(in)或者不在(!in)一个区间或者集合中:
var tag = 6
when(tag){
    1 -> print(1)
    2 -> print(2)
    3,4 -> println("tag等于3或者等于4")
    in 5..10-> println("tag在5到10之中")
    !in 11..20-> println("tag不在11到20之中")
    else -> println("else")//这里的else就是switch中的default
}

tag在510之中
  • when 中使用 in 运算符来判断集合内是否包含某实例:
var item = setOf("flutter", "kotlin", "java")
when {
    "android" in item -> println("android is contains of item")
    "kotlin" in item -> println("kotlin is contains of item")
}

kotlin is contains of item
2.4 检查值是否为指定类型的值–is
var tag = 2
when(tag){
    is Int -> println("$tag is a int")
}

2 is a int
2.5 when中不一定限定常量,也可以是任意表达式
var tag = 8
when(tag>1){
    true -> println("tag大于1")
    false-> println("tag小于1")
    else-> println("tag等于1")
}

tag大于1
2.6 不使用表达式的when语句

像上面if做为块的实例,其实可以改成when,when也可以被当做表达式

var numA = when {
    flag < 3 -> {
        flag = 10
        println("numA < 3 is true")
        flag
    }
    flag == 3 -> {
        flag = 20
        println("numA = 3 is true")
        flag
    }
    else -> {
        flag = 30
        println("numA > 3 is true")
        flag
    }
}
println("numA ---> $numA")

numA ---> 20

3、for语句

  • Kotlin废除了Java中的for(初始值;条件;增减步长)这个规则。但是Kotlin中对于for循环语句新增了其他的规则,来满足刚提到的规则。
  • for循环提供迭代器用来遍历任何东西
  • for循环数组被编译为一个基于索引的循环,它不会创建一个迭代器对象
3.1 新增规则来满足Java中的for(初始值;条件;增减步长)规则

3.1.1 until关键字 until[m,n)即大于等于m,小于n

for (i in 0 until 5){
    print("递增--->$i")
}

递增--->0递增--->1递增--->2递增--->3递增--->4

3.1.2 downTo关键字 downTo[x,y] 即小于等于x,大于等于y

for (i in 8 downTo 6){
    print("递减--->$i")
}

递减--->8递减--->7递减--->6

3.1.3 符号(’ … ') 表示递增的循环的另外一种操作,范围大于等于m,小于等于n,与until关键字对比之下,比较简明,范围不一样

for (i in 1 .. 5){
    print("..递增--->$i")
}

..递增--->1..递增--->2..递增--->3..递增--->4..递增--->5

3.1.4 设置步长 step

for (i in 3 until 12 step 3){
    print("i >>>$i \t")
}
    
i >>>3 	i >>>6 	i >>>9
3.2 迭代

3.2.1 遍历字符串

for (i in "abcefg"){
    print("i => $i \t")
}

i => a 	i => b 	i => c 	i => e 	i => f 	i => g

3.2.2 遍历数组

var arrayList = arrayOf(1,2,3,4,5)
for (i in arrayList){
    print("i => $i \t")
}

i => 1 	i => 2 	i => 3 	i => 4 	i => 5

3.2.3 使用数组的indices属性遍历

var arrayListIndices = arrayOf(10,20,30,40,50)
for (i in arrayListIndices.indices){
    println("arrayListIndices[$i]--->"+arrayListIndices[i])
}

arrayListIndices[0]--->10
arrayListIndices[1]--->20
arrayListIndices[2]--->30
arrayListIndices[3]--->40
arrayListIndices[4]--->50

3.2.4 使用数组的withIndex()方法遍历

var arrayListWithIndex = arrayOf(10,20,30,40,50)
for ((index,value) in arrayListWithIndex.withIndex()){
    println("index-->$index \t value-->$value")
}

index-->0 	 value-->10
index-->1 	 value-->20
index-->2 	 value-->30
index-->3 	 value-->40
index-->4 	 value-->50

3.2.5 使用列表或数组的扩展函数遍历

  • 数组或列表有一个成员或扩展函数iterator()实现了Iterator接口,且该接口提供了next()与hasNext()两个成员或扩展函数
  • 其一般和while循环一起使用
var arrayList = arrayOf(1,2,3,4,5)
val iterator = arrayList.iterator()
while (iterator.hasNext()){
    println(iterator.next())
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin是一种现代化的静态类型编程语言,它可以在Java虚拟机(JVM)上运行,并且与Java语言高度兼容。如果你想学习Kotlin,以下是一个学习路线的建议: 1. 了解基础知识:开始学习Kotlin之前,建议先了解一些基本的编程概念和语法,比如变量、数据类型、条件语句、循环语句等。这将为你后续的学习打下坚实的基础。 2. 学习Kotlin语法:Kotlin与Java有很多相似之处,但也有一些不同之处。学习Kotlin的语法和特性,比如空安全、扩展函数、数据类等,可以通过官方文档、教程或在线课程来学习。 3. 实践编程:通过编写一些简单的程序来巩固所学的知识。可以尝试解决一些小问题或者完成一些小项目,这样可以更好地理解和应用Kotlin的语法和特性。 4. 深入学习面向对象编程:Kotlin是一种面向对象的编程语言,深入学习面向对象编程的概念和原则对于掌握Kotlin非常重要。学习类、对象、继承、多态等概念,并尝试在Kotlin中应用这些概念。 5. 学习Kotlin与Java的互操作性:由于Kotlin与Java高度兼容,学习如何在Kotlin中使用Java类库和框架是非常重要的。了解如何调用Java代码、处理Java集合等,可以帮助你更好地使用Kotlin进行开发。 6. 深入学习Kotlin的高级特性:一旦掌握了Kotlin基础知识,可以进一步学习一些高级特性,比如协程、函数式编程、DSL等。这些特性可以提高你的代码质量和开发效率。 7. 参与实际项目:最好的学习方式是通过实践。尝试参与一些实际的项目或者开源项目,与其他开发者合作,这样可以提升你的编程能力和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值