Kotlin基础之变量

1.声明变量

显示的声明了变量maximumAge为Int类型
在这里插入图片描述

fun main() {
    var str:String ="Hello World";
    println(str)
}

在这里插入图片描述
在这里插入图片描述
可以发现数据类型开头首字母都是大写的,Kotlin抛弃了java中的基本数据类型,全部使用了对象数据类型

2.只读变量

var对应java中的final变量
val对应java中的非final变量
在这里插入图片描述
使用var声明,后面如果不作出修改的话,就会出现黄色警告
在这里插入图片描述
因为后面没有对变量名str作出修改,所以只用val就可以了

fun main() {
    val str:String="HelloWorld";
    println(str)
}

3.类型推断

在这里插入图片描述
系统根据你的赋值,推断出类型,灰色可以不用写

fun main() {
    val name=5;
    println(name)
}

4.编译时常量

在这里插入图片描述

const val MAX=5;//在java中相当于 public final static表示常量
fun main() {
     //下面语句将报错编译时常量只能在函数之外定义
    //const val MIN=4;
    val name=5;
    println(name)
}

在这里插入图片描述
在这里插入图片描述

5.表达式

在这里插入图片描述

5.1 if表达式
fun main(){
    val age=7
    if(age in 0..3){
        println("婴儿")
    }else if(age in 3..12){
        println("少儿")
    }else{
        println("未知")
    }
    //当age不在1到6之间
    if(age!in 1..6){
        print("123")
    }
}

在这里插入图片描述

在if语句中,kotlin中的if用法相比java中有一个额外的功能,他是可以有返回值的,返回的是if语句每一个条件中最后一行代码的返回值。

fun main() {

     val  number=largerNumberTo(4,6)
    println(number)
}
 fun largerNumberTo(num1:Int,num2:Int):Int{

     return if(num1>num2){num1}else{num2}
}

在这里插入图片描述
还可以再简化,当一个函数只有一行代码时,可以省略函数体的部分,直接将这一行代码用等号串连在函数定义的尾部。虽然largerNumberTo函数不止只有一行代码,但是他和只有一行代码的作用是相同的,只是返回了一个if语句的返回值而已,符合使用这个语法糖的条件。

 fun largerNumberTo(num1:Int,num2:Int):Int= if(num1>num2){num1}else{num2}
5.2 when表达式

当判断条件很多的时候,我们可以考虑使用when语句,格式为:匹配值 ->{执行逻辑}
when语句和if语句也可以有返回值,我们可以仍然使用单行代码函数的语法糖

fun main(){

    val score = getScore("Jack")
    println(score)
}

fun getScore(name:String)=when(name){
    "Tom" -> 86
    "Jim" -> 77
    "Jack" ->95
    "Lily" ->100
    else ->0
}

在这里插入图片描述
when语句还可以进行类型匹配
is关键字相当于java中的instanceof关键字。Number是Kotlin内置的一个抽象类,Int,Long,Double,Float等与数字相关的类都是他的子类。我们可以使用类型匹配来判断传入的参数是什么类型

fun main(){
    val num=10;
    checkNumber(num)
}
fun checkNumber(num:Number){
    when(num){
        is Int -> println("number is Int")
        is Double -> println("number is Double")
        else -> println("number not support")
    }
}

在这里插入图片描述
when语句也可以不带参数,假设所有名字都是Tom开头,他的分数是89,这种场景如果使用带参数就无法实现,而使用不带参数可以这么写

fun getScore(name:String)=when{
    name=="Tom" -> 86
    name== "Jim" -> 77
    name=="Jack" ->95
    name=="Lily" ->100
    else ->0
}
fun getScore(name:String)=when{
    name.startsWith("Tom") ->89
    name== "Jim" -> 77
    name=="Jack" ->95
    name=="Lily" ->100
    else ->0
}
5.3 for表达式

通过for -in循环来遍历这个区间,使用…两端的值形成闭区间

fun main(){

   for (i in 0..10){
       println(i)
   }

}

在这里插入图片描述
Kotlin中可以使用until关键字来创建一个左闭右开的区间,默认情况下,for-in循环每次执行循环时都会在区间范围内递增1,相当于java中i++的相关,如果想跳过其中一些元素,可以使用step关键字

fun main(){

 for (i in 0 until 10 step 2){
     println(i)
 }

}

相当于遍历[0,10)这个区间,每次执行循环都在这个区间范围内递增2
在这里插入图片描述
…和until都是升序,downTo时降序

fun main(){

 for (i in 10 downTo  0 step 2){
     println(i)
 }

}

在这里插入图片描述

在这里插入图片描述
在Kotlin中,我们不需要再像使用Java时那样拼接字符串使用+号,而是可以直接将表达式写在字符串里面,即时是构建非常复杂的字符串也是轻而易举。
首先来看一下kotlin中字符串内嵌表达式的语法规则:

"hello,${obj.name}.nice to meet you!"

可以看到,Kotlin允许我们在字符串里嵌入${}这种语法结构的表达式,并在运行时使用表达式执行的结果替代这一部分内容。
另外当表达式中仅一个变量的时候,还可以将两边的大括号省略,如下所示:

"hello,$name.nice to meet you!"

例如在toString()方法里就使用了比较复杂的拼接字符串的写法。

var brand="Samsung"
val price=1299.99
printlin("Cellphone(brand="+brand+",price="+price+")")

上述字符串使用了4个加号连接符,写起来比较吃力,代码可读性也比较差
而使用字符串内嵌表达式的写法就比较简单,如下所示

val brand="Samsung"
val price=1299.99
println("Cellphone(brand=$brand,price=$price)")

这样简洁许多,也是Kotlin更加推崇的写法。

fun main() {

    val origin="Jack"
    val dest="Rose"

    //在java中相当于+号,连接起来
    println("$origin love $dest")

    val flag=false
    //${},括号中可以添加一些表达式
    println("Answer is :${if(flag)"我可以" else "对比起"}")


}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值