Kotlin语法(三)

基本类型

1、numbers

kotlin提供了以下几种类型,和java保持一致

TypeBit width
Double64
Float32
Long64
Int32
Short16
Byte8

需要注意的是characters不属于number类型

long类型的数值以L结尾:123L
float类型的数值以F结尾:123.12F
默认的是整数值为Int类型
默认的小数类型为Double类型

十六进制的数值以0x开头:0x0f
二进制的数值以0b开头:0b00010101
kotlin没有8进制的表示方法

为了将数值表示的更清楚,可以用_将数字隔开如:
val oneMillion = 1_000_000
val hexBytes = 0xFF_EC_DE_5E

2、数值的表现形式

数值变量可以分为两种:一种是不为null,一种是可为null的。

val a: Int = 1000
val boxedA: Int? = a
val boxedB: Int? = a

println (a === boxedA)
println (a === boxedB)
println (boxedA === boxedB)

println (a == boxedA)
println (a == boxedB)
println (boxedA == boxedB)
打印结果为=======
false 
false 
false
true
true
true

注:
===比较的是两边的对象引用是否属于同一个
== 比较的是两个对象的equals

如果number类型间互相转换时,要使用提供的方法to…(),例如将一个Int型的转换成Long型的则为:

val a: Int = 1000
val b: Long = a.toLong()

3、characters

Char类型用’ ‘表示。而且char类型的不能直接转换成Numbers。

4、Boolean

跟java一样有true 和 false两个值。相应的运算符有|| && !

5、Arrays

和java的用法基本一样,初始化代码如下:

val arr = arrayOf("a", "b", "c")
arr[0] = "d"

println(arr[0])
println(arr[1])

6、Stirng

string有两种方式:
(1)用双引号”“,跟java一样,val str = “hello word”
(2)用三个引号,如果一段文字是多行的可以用这种方法:

val text = """
    Tell me and I forget.
    Teach me and I remember.
    Involve me and I learn.
    (Benjamin Franklin)
    """

string还可以包含模板表达式(groovy的插值),用关键字$表示,如:

val s = "abc"
val str = "$s.length is ${s.length}" 
println(str)


=====打印结果为
abc.length is 3

7、packages and import

基本和java一样,有一点不一样的就是,如果Import两个名字一样的类,则可以用重新命名别名的方式解决冲突

import foo.Bar
import bar.Bar as bBar //bBar 代表着 bar.Bar

8、return and jumps

kotlin跳出一个表达式有三种方式:
(1)return: 会跳出本方法体或所在的匿名方法体
(2)break: 跳出本次loop循环
(3)continue: 暂不执行本次循环,继续执行下次循环

  • break and continue labels
    一个kotlin的表达式可以标记一个标签,此标签后跟着一个@符号,例如:
loop@ for(i in 1..100){
    println(i)
}

我们在使用break和continue时就可以使用这个标签了,例如:

loop@ for(i in 1..100){
    for(j in 1..100){
        if(j == 50) break @loop //如果满足j == 50的条件,则会跳出有loop标签的最外层的for循环
    }
}
  • return at labels
    return 会跳出所在的方法体或者所在的匿名方法体,如下:
fun foo(){
    val ints = listOf(1, 3, 5, 7)
    ints.forEach {
        if (it == 3) return 
        println(it)
    }

    println("fun foo")
}

//此方法中,it == 3成立时,会跳出foo方法, "fun foo"不会打印

如果我们想要只是跳出当前的lambda表达式,可以给此lambda表达式添加一个标签,然后return@label,如下

fun foo(){
    val ints = listOf(1, 3, 5, 7)
    ints.forEach lit@ {
        if (it == 3) return@lit //跳出for循环,会继续执行打印"fun foo"
        println(it)
    }

    println("fun foo")
}

另外一种处理方法是,用匿名方法替换lambda表达式,如

fun foo(){
    val ints = listOf(1, 3, 5, 7)
    ints.forEach (fun (it: Int){
        if (it == 3) return //跳出for循环,会继续执行打印"fun foo"
        println(it)
    })
    println("fun foo")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值