Kotlin基础语法一

  • 语言声明变量与内置数据类型

    var:数据可变

    val: 数据不可变

  • 内置数据类型

    String 字符串

    Char 单字符

    Boolean true/false

    Int 整形

    Double 小数

    List 集合

    Set 无重复的元素集合

    Map 键值对的集合

  • Kotlin语言的类型推断

    val info : String = "Hello KT"

按照KT的语法,需要什么类型。由于KT有类型推断,所以写法可以简化

复制代码
val info = "Hello KT"
  • 编译时常量 const

    const val PI = 3.1415

性能优化:编译时内联替换避免运行时开销

Java互操作:会生成public static final字段

注解参数:编译时常量才能作为注解参数使用

总结:val保证引用不可变,而const val进一步要求值在编译期确定,适用于真正的常量场景

  • 查看Kotlin反编译后字节码

    点击顶部菜单栏 Tools → Kotlin → Show Kotlin Bytecode

  • range表达式

    number in 10..59

  • when表达式

1、基础用法(替代switch)

复制代码
when (x) {
    1 -> println("x是1")
    2, 3 -> println("x是2或3")  // 多条件合并
    in 4..10 -> println("x在4到10之间") // 范围判断
    else -> println("其他情况")
}

2‌、作为表达式返回值‌

复制代码
val result = when {
    x > 0 -> "正数"
    x < 0 -> "负数"
    else -> "零"
}
  • String模版

    复制代码
      val garden = "黄石公园"
      val time = 6
      println("今天天气很晴朗,去${garden}玩,玩了$time 小时")
  • 函数

    private fun function(age: Int, name: String) : Int {
    return 404
    }

Java叫方法,Kotlin叫函数。他们的不同点在于方法依赖对象,函数依赖对象,他依赖于File。

Kotlin函数这种写法,更突出输入和输出。而先有输入后有输出,从逻辑上来讲,更合理。

  • 函数参数的默认参数

    fun main() {
    action01("lisi", 89)
    action02("wangwu")
    action03()

    复制代码
      action03("赵六", 76)

    }

    private fun action01(name: String, age: Int) {
    println("我的姓名是:name, 我的年龄是:age")
    }

    private fun action02(name: String, age: Int = 77) {
    println("我的姓名是:name, 我的年龄是:age")
    }

    private fun action03(name: String = "王五", age: Int = 67) {
    println("我的姓名是:name, 我的年龄是:age")
    }

  • 具名函数参数

    fun main() {
    loginAction(age = 99, userpwd = "123", usernam = "de", username = "Derry", phonenumber = "123456")
    }

    private fun loginAction(username: String, userpwd: String, phonenumber: String, age: Int, usernam: String) {
    println("username:username, userpwd:userpwd, phonenumber:phonenumber, age:age")
    }

  • Unit类型

    // Java语言的void关键字(void是 无参数返回的 忽略类型)
    // 但是他是关键帧啊,不是类型,这很矛盾
    // Unit不写,默认也有,Unit代表 无参数返回的 忽略类型 == Unit类型类
    private fun doWork() : Unit {
    return println()
    }

    private fun doWork2() {
    return println()
    }

  • Nothing类型

    class AImpl : A {
    override fun show() {
    // 下面这句话,不是注释提示,会终止程序的
    TODO("not implemented")
    }
    }

Kotlin中的TODO()是一个‌故意抛出异常的实用函数‌,设计目的和典型用法如下:

一、核心设计意图

‌显式标记未实现代码‌

不同于Java的普通注释,TODO()会主动抛出NotImplementedError,强制开发者注意未完成的功能点

‌防止遗漏开发任务‌

在IDE中会高亮显示TODO(),避免开发者忽略未实现的代码逻辑

‌替代Java的throw new UnsupportedOperationException()‌

Kotlin通过标准化语法简化了临时占位实现

  • 反引号中函数

    fun main() {
    // 第一种情况:
    这是一个测试函数 20250610("Derry", "123456")

    复制代码
      // 第二种情况:// in  is  在kt里面就是关键字,怎么办呢? 使用反引号
      KtBase21.`is`()
      KtBase21.`in`()
    
      // 第三种情况: 很少发生
      `65465655475`()

    }

    private fun 这是一个测试函数 20250610(name: String, pwd: String) {
    println("模拟:用户名是name, 密码是:pwd")
    }

相关推荐
Scott9999HH6 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
码智社7 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海7 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖8 小时前
JDK 26 新特性详解
java·开发语言
马优晨9 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区11 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大11 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai11 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜12 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa12 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio