kotlin 之基础类型、基本概念

kotlin 之基础类型、基本概念

前言

正文

基础概念

1. 包定义和导入
//[1] 包的声明应处于源文件顶部
package my.demo

import kotlin.text.*
2. 变量
  • 只读变量 val
// val 不可变,需立即赋值
val a: Int = 1  // 立即赋值
val b = 2   // 自动推断出 `Int` 类型
val c: Int  // 如果没有初始值类型不能省略
c = 3       // 明确赋值
  • 读写变量 var
var x= 5
x = 6
  • 顶层变量。包名下可直接使用
val PI = 3.14

fun sqrt(radio:Int):Int{
    return radio * PI
}
3. kotlin 常量 ,const 关键字
//使用
constt val CONST_NUM = 1

//[1] kotlin 的常量指的是编译期常量(compile-time constant),编译时会将变量直接替换值
4. 延迟初始化 lateinit
lateinit var : 表示我会初始化的,编译器你就不用检查报错了
5. 注释

与 Java 引用

//[1] 单行注释
// 这是注释

// 多行注释
/*
*
*/
6. 入口 main 函数
// readLine 方法读取用户输入
fun main(args: Array<String>) {
    println("n:${readInt()}")
}
// 扩展函数
private fun readInt() = readLine()!!.toInt()
7. 命令行编译 kotlin 文件
//可以看到,会把 kotlin 代码转换成 jar 包
- kotlinc hello.kt -include-runtime -d hello.jar
- java -jar hello.jar

基础类型

1. 类型推断
//[1] int 和 long
val one = 1 // Int
val threeBillion = 3000000000 // Long
val oneLong = 1L // Long
val oneByte: Byte = 1

//[2] 浮点和双精度
val pi = 3.14 // Double
val e = 2.7182818284 // Double
val eFloat = 2.7182818284f // Float,实际值为 2.7182817
2. 数字字面值下划线
//更易读
val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010
3. 运算
//[1] 位运算
val x = (1 shl 2) and 0x000FF000

完整位运算列表(只用于 Int 与 Long)

  • shl(bits) : 有符号左移
  • shr(bits) : 有符号右移
  • ushr(bits): 无符号右移
  • and(bits): 位 与操作
  • or(bits): 位或操作
  • xor(bits):位异或操作
  • inv() : 位非
4. bool 布尔

需要可空引用时,布尔会被装箱

5. 数组
//[1] 初始化一个数组
val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]

//[2] 其他操作
//[42, 42, 42, 42, 42]
val arr = IntArray(5) { 42 }
// [0, 1, 2, 3, 4] 
var arr = IntArray(5, { it * 1 })
6. 无符号整型

Kotlin 为无符号整数引入了以下类型:

  • kotlin.UByte: 无符号 8 比特整数,范围是 0 到 255
  • kotlin.UShort: 无符号 16 比特整数,范围是 0 到 65535
  • kotlin.UInt: 无符号 32 比特整数,范围是 0 到 2^32 - 1
  • kotlin.ULong: 无符号 64 比特整数,范围是 0 到 2^64 - 1

区别有符号整数:

  • Kotlin.Byte: 8位, -128 ~ 127
  • Kotlin.Int: 16位, -2^31 ~ 2^31 -1
7. 字符串
//普通字符串
val s = "Hello, world!\n"
//原始字符串,可以包含换行和所有字符
val text = """
    for (c in "foo")
        print(c)
"""
//[1] 使用  trimMargin() 函数去除前导空格,默认| 用作前缀
val text = """
    |Tell me and I forget.
    |Teach me and I remember.
    |Involve me and I learn.
    |(Benjamin Franklin)
    """.trimMargin()
    
//[2] 字符串模板, $i 表示 i
val i = 10
println("i = $i") // 输出“i = 10”
8. Android 资源文件字符串里的 $ 使用
//字符串
<string name="hi">Hi %s</string> 

//获取字符串
getString(R.id.hi, "world");
9. ?. 和 ?: 操作符
val files = File("Test").listFiles()

//[1] files 不为null, 打印size; 否则 打印null
println(files?.size)

//[2] files 不为null, 打印size; 否则 打印 "empty"
println(files?.size ?: "empty")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值