Kotlin 基本语法记录

1 数据格式转换

1.1  16 进制 定义和显示

val hexBytes = 0xFF_EC_DE_5E
    print(hexBytes.toString(16).uppercase())

FFECDE5E
Process finished with exit code 0

1.2 将字节转为16进制

字符串如何拼接呢?

我们使用%02X打印两个位置(02)的十六进制(X)值,并将其存储在字符串st中。

 val bytes = byteArrayOf(12, 2, 15, 11)

    for (b in bytes) {
        var st:String=""
         st =   String.format("%02X", b)
        println(st)
    }
  val st1="1a"
    println(st1.toByte(16))
    println(st1.toByte(16).toString(16))

Result:

26(10)
1a(16)

1.3 16进制与char 变量转换

  以下方法可以将  字节变量(10进制的)转为16进制数据。如果接受到16进制字符串,可以反向拆分,比较麻烦 需要charbyte ,一个字节对应2个数据。

fun bytesToHex(bytes: ByteArray): String {
    val hexArray = "0123456789ABCDEF".toCharArray()
    val hexChars = CharArray(bytes.size * 2)
    for (j in bytes.indices) {
        val v = (bytes[j] and 0xFF.toByte()).toInt()
//println(v.toString(16))
        hexChars[j * 2] = hexArray[v ushr 4] // high 4 bit
       // println(hexChars[j * 2] .toString())
        hexChars[j * 2 + 1] = hexArray[v and 0x0F] // low 4bit
       // println(hexChars[j * 2+1] .toString())
    }
    return String(hexChars)
}
val bytes = byteArrayOf(12, 2, 15, 11)
​​​​​​​val s = bytesToHex(bytes)
println(s)

0C020F0B

2 记录

2.1 Data 数据类型

为了确保生成的代码的一致性以及有意义的行为,数据类必须满足以下要求:

  • 主构造函数需要至少有一个参数;
  • 主构造函数的所有参数需要标记为 val 或 var
data class Person(val name: String) {
    var age: Int = 0
}
 val person1 = Person("John")
 println(person1)

结果是 Person("John")

数据类型打印的竟然是类名及其参数。。。Ref

2.2 类中可以引用 类名来申明

为啥类中可以用父类作为变量类型来申明?? 神奇。。

要使⽤⼀个属性,只要⽤名称引⽤它即可,其目的是为了调用类中的各种属性。

data class Counter(val dayIndex: Int) {
    operator fun plus(increment: Int): Counter {  // 竟然类型为Counter?
        return Counter(dayIndex + increment)
    }
}


  val count1 =Counter(2)

    print(count1.plus(1))

Counter(dayIndex=3)

2.3 求余和取整

   这一块和其他语言一样。

  val a=5
    val b=2
    println(a / b )//取整
    println(a % b) //求余数

2
1

2.4 map

 这是 格式转换? 如何增加新值?

  var map = mapOf("a" to 1, "b" to 2, "c" to 3)
    //map("key")=4  // 出错
    println(map["a"])
    println(map["key"]) // 这里又不出错, why

1
null

2.5 数据交换

fun MutableList<Int>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] // “this”对应该列表
    this[index1] = this[index2]
    this[index2] = tmp
}

  val list = mutableListOf(1, 2, 3)
    list.swap(0, 1) // “swap()”内部的“this”会保存“list”的值
    println(list)

[2, 1, 3]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个码农都是奢望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值