Kotlin 基础语法

项目结构

我们可以简单看一下 Kotlin 项目所包含的目录、文件。

  • Kotlin 项目中包含了许多含gradle字样的目录或文件,这些都是与构建工具 Gradle 相关的目录。要了解这些需要系统地学习 Gradle,在这里不会过多涉及,其中用的最多的是build.gradle.kts
  • Kotlin 源文件存放在src\main\kotlin中,而资源(如图片、字体等等)存放于src\main\resources中。
    // 项目结构
    untitled
    	|-- .gradle // Gradle 缓存
    	|-- .idea // IDEA 配置
    	|-- build // Gradle 构建输出内容,例如运行 Jar 任务,会在此处生成 Jar 包。
    	|-- gradle // 里边会有 wrapper,主要是指定 Gradle 版本
    	|-- src
    		|-- main
    			|-- kotlin // Kotlin 源文件
    			|-- resources // 资源
    		|-- test // 测试代码
    	|-- .gitignore // Git 忽略项配置
    	|-- build.gradle.kts // 构建脚本
    	|-- gradle.properties // 配置 Gradle 属性
    	|-- gradlew // 用于 Linux 或 MacOS 下执行 Gradle 任务
    	|-- gradlew.bat // 用于 Windows 下执行 Gradle 任务
    	|-- settings.gradle.kts // 做一些 Gradle 全局设置,管理模块等
    

包的定义和导入

定义

在我们的电脑上,需要使用文件夹来归类不同的软件、文件。在 Kotlin 中,包也是这样的作用。

  • 在 Kotlin 项目中,以“package+包名”定义源文件的包名,该语句必须写在内容的最顶端(一般情况下放在第一行,但不一定要是第一行,前面可以加空行)。
  • 源文件中的内容会属于该包下,比如main函数,其全名为ink.awning.main
  • 如果不声明包名,则为默认包名(空的)。
  • 包名一般情况下是跟所在文件夹一一对应,比如package ink.awning说明文件在kotlin\ink\awning下,如果不对应将会出现弱警告(当然,在运行时并不会抛出异常,只是容易产生混乱,这里建议Main.kt的包定义删掉,使用默认包名,不然二级及以上目录重构(重命名)时不能自动更改包名):
    包名与目录不一致的弱警告

Note:一般情况下,使用 IDEA 很少有需要管软件包的情况,我们只需要像平时新建文件、文件夹一样,右键点击某一个目录,在新建中选择 Kotlin 类/文件创建 Kotlin 源文件,或者选择软件包新建一个目录,IDEA会自动生成 Kotlin 文件的包名。将某一文件拖动到其他目录并确认,IDEA也会自动修改文件的包名。

导入

同一包下的内容,可以直接使用,如果要使用其他包中的内容,需要使用“import+名称”导入,这里的名称是全名。

// 结构
kotlin
	|-- other
		|-- Other.kt // package ink.awning.other
	|-- Inner.kt // package ink.awning
	|-- Main.kt // package ink.awning
package ink.awning

// 使用全名导入 Other
import ink.awning.other.Other

fun main() {
    // 使用同一包下的内容,无需导入
    Inner()
    // 使用不同包下的内容,需要导入
    Other()
}

如果我们需要导入一个包下的全部内容,可以用*

import ink.awning.other.*

程序入口

程序入口可以指明程序开始运行的位置。我们在运行项目时,其实是运行了Main.kt下的main函数,可以看到在main函数前有一个
播放按钮
,点击此按钮与顶栏的效果一致。
程序入口

Kotlin 支持以下两种格式的程序入口:

fun main() {}

fun main(args: Array<String>) {}

注释

注释是不会被执行的内容

// 我是单行注释,这一行都是我的。

/*
我是多行注释
括起来的几行都不会被执行
*/

句末分号

Kotlin 一个语句后边可以加分号表示该语句结束,不过通常省略掉

fun main() {
	println("Hello Kotlin!");

	// 有时候如果语句很短,我们可以把它们写在同一行,用分号隔开就行
	print("Hello"); print(" "); print("Kotlin!")
}

Note:println打印出内容后会换行,而print不会。

Kotlin 是一种现代的静态类型编程语言,它设计用于在 Java 虚拟机上运行,并且与 Java 语言完全互操作。Kotlin语法简洁而富有表现力,使得开发者能够以更少的代码完成更多的工作。以下是 Kotlin 基础语法的一些关键点: ### 函数定义 函数在 Kotlin 中使用 `fun` 关键字来声明。例如,一个简单的函数可以这样定义: ```kotlin fun greet(name: String): Unit { println("Hello, $name") } ``` 在这个例子中,`greet` 是函数名,`name` 是参数,其类型为 `String`,返回类型为 `Unit`,这相当于 Java 中的 `void`。 ### 变量和不可变值 Kotlin 使用 `val` 和 `var` 来声明变量。`val` 用于不可变(只读)变量,而 `var` 用于可变变量。 ```kotlin val immutableValue = 10 // 不可变 var mutableValue = 20 // 可变 mutableValue = 30 // 允许改变 ``` ### 类型推断 Kotlin 支持类型推断,这意味着你通常不需要显式指定变量的类型,编译器会根据赋值自动推断出类型。 ### 控制流表达式 控制流结构如 `if-else`、`when`(类似于 switch-case)以及循环结构 `for`、`while` 都非常直观。 ```kotlin val number = 5 when (number) { in 1..10 -> println("Between 1 and 10") else -> println("Not between 1 and 10") } ``` ### 空安全 Kotlin 的设计有助于避免空指针异常。变量默认是不可为空的,如果你想让变量接受 null 值,需要在类型后面加上问号 `?`。 ```kotlin var nullableString: String? = null nullableString = "Hello" ``` ### 集合 Kotlin 提供了丰富的集合操作,包括列表、集合和映射等。 ```kotlin val list = listOf(1, 2, 3) val map = mapOf("one" to 1, "two" to 2) ``` ### Lambda 表达式 Kotlin 支持 lambda 表达式,这使得编写函数式风格的代码变得简单。 ```kotlin val sum = { a: Int, b: Int -> a + b } println(sum(5, 3)) // 输出 8 ``` ### 扩展函数 Kotlin 允许我们为已存在的类添加新的方法,而无需继承或修改它们。 ```kotlin fun String.lastChar(): Char = this[length - 1] ``` 以上只是 Kotlin 基础语法的一小部分。要深入学习 Kotlin,建议通过官方文档或者在线课程进行系统学习,实践是掌握任何编程语言的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值