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
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86879.shtml
英文地址,請注明出處:http://en.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; 容…