網站首頁 編程語言 正文
前言
上一篇我們認識了Kotlin編程語言,也搭建好開發環境。本篇就進入Kotlin的基礎語法介紹,與其他編程語言一樣,Kotlin也有自己的一套編碼規范。
文章總覽
1.Kotlin基本語法
1.1 函數聲明
使用關鍵字 fun
聲明:
fun sum(a: Int, b: Int): Int { return a + b }
以上函數有倆個 int
參數:a , b;返回值為 Int
類型值。
在Kotlin中,返回值類型可以自行推斷,函數體可以是表達式:這與Java是有區別的,直接用 =
相連
fun sum(a: Int, b: Int) = a + b
無返回值的函數,使用 Unit
為寫法更簡便可以將 Unit 省略。
fun printSum(a: Int, b: Int): Unit { println("sum of $a and $b is ${a + b}") } // Unit 返回類型可以省略
1.2 程序主入口
Kotlin 程序的入口是 main
函數,與 Java 是一樣的。
fun main() { println("Hello world!") // 打印字符串 }
程序在執行時,會先進入 main 函數開始執行。
1.3 變量
- 只讀局部變量(常量) 使用
val
定義
val a: Int = 1 // ?即賦值 val b = 2 // ?動推斷出 `Int` 類型 val c: Int // 如果沒有初始值類型不能省略 c = 3 // 明確賦值
- 可重新賦值變量 使用
var
定義
var x = 5 // ?動推斷出 `Int` 類型 x += 1 // x重新賦值
這與 Java 有很大區別,不用指定變量的類型,有編譯器自動推斷出來。
1.4 條件表達式
與 Java 中的 if 語句一樣
if (a > b) { return a } else { return b }
在 Kotlin中 if
也可以?作表達式,更加簡便
fun max(a: Int, b: Int) = if (a > b) a else b
1.5 when表達式
when 將它的參數與所有的分?條件順序?較,直到某個分?滿?條件
when (obj) { 1 -> "One" "Hello" -> "Greeting" is Long -> "Long" !is String -> "Not a string" else -> "Unknown" }
可以類比 Java 中的 switch 語句。
1.6 空值與空檢測
一個表達式或者一個變量可以為Null, 在Kotlin中可以使用 ?
來結尾表示
fun parseInt(str: String): Int? { // …… } // 函數返回值可為空,當返回值 不是 Int 類型,返回值就是Null
這一特性解決了 Java 中一老大難的問題:NullpointException 空指針報錯問題,在日常開發中幫開發者提高了不少開發效率和減少了不少bug。
1.7 區間使用
使? in
操作符來檢測某個數字是否在指定區間內
val x = 10 val y = 9 if (x in 1..y+1) { println("in range") }
這個特性可以運用到 區間和數列中。
2.Kotlin編碼規范
目錄結構:可以類比 Java 項目,包名的規則:小寫字母,公司/組織域名反寫
代碼源文件:以 .kt 為擴展名,命名規則首字母大寫的駝峰風格,例如?HelloWorld.kt
命名規則:
- 類與對象的名稱以大寫字母開頭并使用駝峰風格
- 包的名稱總是小寫且不使用下劃線
文檔注釋:
- 多行注釋
- 單行注釋
代碼縮進風格要統一
注解:將注解放在單獨的?上,在它們所依附的聲明之前,并使?相同的縮進
- 鏈式調用:對鏈式調?換?時,將
.
字符或者?.
操作符放在下??,帶有縮進 - 不在
.
或者?.
左右留空格:foo.bar().filter { it > 2 }.joinToString() , foo?.bar()
- 在
//
之后留?個空格: // 這是?條注釋 - 不要在?于指定類型參數的尖括號前后留空格:
class Map { …… }
- 不要在
::
前后留空格:Foo::class 、String::length
- 不要在?于標記可空類型的
?
前留空格:String?
總結
本文主要講解 Kotlin 常用的基本語法,后續會針對特定的知識點展開學習,同時學習了Kotlin 編碼規范,對日常規范編寫代碼是非常有幫助。
原文鏈接:https://juejin.cn/post/7131019341587283981
相關推薦
- 2022-07-08 從生成CRD到編寫自定義控制器教程示例_Golang
- 2022-09-02 Python常用編碼的區別介紹_python
- 2022-07-21 Spring Data JPA 多表關聯查詢的實現
- 2022-09-17 docker資源控制管理Cgroup的實現_docker
- 2022-08-16 C#?winform?請求http的實現(get,post)_C#教程
- 2022-06-12 GitHub?AI編程工具copilot在Pycharm的應用_python
- 2022-05-08 ASP.NET?MVC異常過濾器用法_實用技巧
- 2022-12-06 React?Hook中的useEffecfa函數的使用小結_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支