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 = 6println("今天天气很晴朗,去${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")
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无人机避障——感知篇(在Ubuntu20.04的Orin nx上基于ZED2实现Vins Fusion)

设备&#xff1a;Jetson Orin nx 系统&#xff1a;Ubuntu 20.04 双目视觉&#xff1a;zed 2 结果展示&#xff1a; 官网中的rosdep install --from-paths src --ignore-src -r -y如果连不上&#xff0c;可以用小鱼rosdepc进行替换&#xff1a; 安装标定工具&#xff1a; 1、…

从零构建端到端AI天气预测系统:不依赖第三方API的实践指南

引言&#xff1a;自主可控的AI气象解决方案 在当今数据隐私和系统自主性日益重要的背景下&#xff0c;本文将详细介绍如何完全不依赖任何第三方API&#xff0c;从数据采集到模型部署&#xff0c;构建一个完整的本地化AI天气预测系统。这个方案特别适合对数据主权有要求的企业或…

扣子数据库实战案例:搭建AI登记助手

《扣子开发AI Agent智能体应用&#xff08;人工智能技术丛书&#xff09;》(宋立桓&#xff0c;王东健&#xff0c;陈铭毅&#xff0c;程东升)【摘要 书评 试读】- 京东图书 在当今的数字化生活场景中&#xff0c;无论是拜访公司还是进入小区&#xff0c;登记信息似乎已经成为…

STA(Station)模式与AP(Access Point)模式

以下是STA&#xff08;Station&#xff09;模式与AP&#xff08;Access Point&#xff09;模式的核心区别对比表&#xff0c;综合各搜索结果的关键信息整理&#xff1a; 对比维度‌STA模式‌‌AP模式‌角色定位‌无线终端&#xff08;客户端&#xff09;无线接入点&#xff08…

【prometheus+Grafana篇】基于Prometheus+Grafana实现postgreSQL数据库的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页__奈斯DB &#x1f50e; IF Club社区主页__奈斯、 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、N…

什么是探索式测试,应该怎么做?

探索式测试&#xff08;Exploratory Testing&#xff09;是一种强调“测试设计与执行同步进行”的软件测试方法&#xff0c;它将测试人员的知识、经验、直觉与系统探索相结合&#xff0c;在动态执行中灵活设计用例并发现缺陷。与传统的基于文档的测试&#xff08;如预先设计好详…

使用 ollama 在 mac 本地部署一个 qwen3:8b 模型

前言 ollama 就是一个运行大模型的框架。要运行大模型&#xff0c;还需要大模型本身。 下载安装 ollama 从 ollama 官网 下载mac 版本的 ollama。 启动 ollama 安装好选择启动即可&#xff0c;如果没有选择启动&#xff0c;可以使用命令启动。 ollama serve使用 ollama 运…

13.18 Ollama+LLaMA3企业级部署实战:6步打造私有化大模型高效引擎

Ollama+LLaMA3企业级部署实战:6步打造私有化大模型高效引擎 # LanguageMentor 技术方案:大模型选型与 Ollama 私有化部署 **关键词**:Ollama 部署实践, LLaMA 3 微调, 本地化模型管理, 大模型选型策略, 私有化 Agent 架构 ---## 1. 技术选型背后的深度思考 ### 1.1 为…

经济系统的「资源死锁」与「架构重构」:从通缩陷阱到可持续模型设计

经济系统的「资源死锁」与「架构重构」:从通缩陷阱到可持续模型设计 关键词:货币泄漏 财富分配算法 预期管理 反脆弱架构 一、系统故障诊断:当经济陷入「资源死锁」 1.1 内存泄漏式资源浪费 低效投资冗余:重复性建设如同未释放的内存指针,持续占用资源却无实际产出(m…

脱离 Kubernetes,基于原生 Spring Cloud + 云 API 的轻量级自管理微服务平台架构设计

在微服务架构日趋成熟的今天&#xff0c;Kubernetes&#xff08;K8s&#xff09;已成为事实上的容器编排标准。然而&#xff0c;对于中小团队或资源受限的企业来说&#xff0c;K8s 的引入成本、运维复杂度与学习曲线并不总是值得。 作为替代方案&#xff0c;基于 Spring Cloud…

【iSAQB软件架构】复杂系统架构描述的推荐实践

概述 无论架构是明确形成还是隐性形成&#xff0c;如果没有被记录下来&#xff0c;其作用都是有限的。只有经过适当记录的架构才能持续地被交流、讨论和进一步发展。 软件架构不仅要与其他架构师讨论。软件架构的所有方面都要向不同利益代表&#xff08;利益相关者&#xff0…

python中的面向对象:继承、封装、多态

# 导入 ABC 是指的引入抽象父类&#xff08;Abstract Base Class - 本质是抽象方法装饰器&#xff09; from abc import ABC, abstractmethodclass Food(object):# 构造方法def __init__(self, name):self.name name# Food子类 class Bone(Food):def __init__(self):super()._…

Excel大厂自动化报表实战(高级函数与数据连接)

这是Excel大厂自动化报表实战第一期--高级函数与数据连接 数据资源已经与这篇博客捆绑&#xff0c;有需要者可以下载通过网盘分享的文件&#xff1a;2.4自动化报表-8月成交数据.xlsx&#xff0c;2.4自动化报表-8月获客数据.csv等2个文件 链接: https://pan.baidu.com/s/16nzy1I…

造成服务器宕机的原因都有哪些?

随着网络业务的快速发展&#xff0c;服务器对于企业的重要性也在逐渐提高&#xff0c;稳定的服务器能够让业务正常持续的运行&#xff0c;给用户带来快速的数据传输速度&#xff0c;但是服务器在进行长时间运行的过程中&#xff0c;也会出现服务器宕机等故障&#xff0c;本文主…

Redis 安装实践:基于鲲鹏 ARM 架构 Ubuntu 环境

文章目录 &#x1f9f0; 环境信息&#x1f680; 安装步骤&#x1f527; 安装并锁定版本&#x1f4c1; 修改数据目录配置✅ 启动并验证&#x1f4da; 参考文档&#x1f4dd; 小结 &#x1f9f0; 环境信息 系统版本&#xff1a;Ubuntu 20.04.6 LTS架构平台&#xff1a;鲲鹏 ARM&…

ubuntu 无法访问位置 error mounting 解决办法 双系统

sudo tail -n 50 /var/log/syslog 从 dmesg 的输出中&#xff0c;我们看到了两条关键的错误信息&#xff1a;深色版本[ 57.277443] ntfs3: nvme0n1p6: It is recommended to use chkdsk. [ 57.278906] ntfs3: nvme0n1p6: volume is dirty and "force" flag is n…

数据库入门:从零开始掌握核心概念

数据库基础 1.什么是数据库&#xff1f; 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库&#xff1f; 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题 文件不利于数据查询和管理文件不利于存储海量的数据文件在程序中控制不方便 数据库存储介质&#xf…

【Steel Code】8.4 PLATE GIRDER 钢板梁

文章目录 8.4 板梁 GIRDER8.4.1 设计强度8.4.2 正常使用性的最小腹板厚度8.4.3 避免受压翼缘屈曲的最小腹板厚度8.4.4 约束梁的弯矩承载力8.4.4.1 腹板不易剪切屈曲8.4.4.2 腹板易剪切屈曲 8.4.5 轴向力的影响8.4.6 剪切屈曲阻力8.4.7 中间横向腹板加劲肋8.4.7.1 间距8.4.7.2 加…

P8784 [蓝桥杯 2022 省 B] 积木画

P8784 [蓝桥杯 2022 省 B] 积木画 - 洛谷 题目描述 小明最近迷上了积木画&#xff0c;有这么两种类型的积木&#xff0c;分别为 I 型&#xff08;大小为 2 个单位面积) 和 L 型 (大小为 3 个单位面积): 同时&#xff0c;小明有一块面积大小为 2N 的画布&#xff0c;画布由 2N…

C++标准库大全(STL)

C标准库大全(STL) 1. 容器&#xff08;Containers&#xff09; *问题类型&#xff1a; 序列容器&#xff08;std::vector, std::deque, std::list, std::forward_list, std::array, std::string&#xff09;&#xff1a; 各自的特点、底层实现、优缺点和适用场景&#xff1f; 容…