Kotlin 基础

Hello World

fun main(args: Array<String>) {
    println("Hello World!")
}

基本数据类型

  • Byte 1字节整数
  • Short 2字节整数
  • Int 4字节整数
  • Long 8字节整数
  • Float 4字节浮点数
  • Double 8字节浮点数
  • Boolean 布尔型
  • Char 字符型

变量、常量声明

var声明变量,用val声明常量,有初始值时类型可由编译器自动推断

var t:Int = 123

var a = 123
a = 345

val A = 123
A = 345 // error

val B:Int
B = 123
B = 345 //error

// 标明类型时,变量默认不可空
var c:Int = null // error c为不可空

// 声明可空变量,在类型后加 ?
var d:Int? = null

类型转换

只允许显式类型转换

toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
toString(): String

接收用户输入

println("你输入了:${readLine()}")

  • 使用java.util.Scanner输入时,传入System.in参数会产生错误,因为in在kotlin中是保留字。使用反引号访问该字段(类似于在js中用obj[name]访问对象)

    val sc:Scanner = Scanner(System.in) // error
    
    val sc:Scanner = Scanner(System.`in`)  
    sc.nextInt()

控制流

while,do-while,if-else 正常使用
没有switch语句 使用when表达式代替

if-else 表达式

if-else中最后执行的表达式为返回值

var a = 1
var b = if(a == 0) 123 else 456
println(b) // 456

for-in

for循环只有for-in形式,没有for(;;)形式
遍历有迭代器的对象

val array = arrayOf(1,2,3,4,5)

for (item in array) print(item)

for (i in array.indices) {
    print(array[i])
}

for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}

when表达式

when 既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式, 符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值。

val x = 12
// 增强switch
when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    3, 4 -> print("x == 3 or x == 4")
    in 1..10 -> print("x is in the range")
    !in 10..20 -> print("x is outside the range")
    is String -> x.startsWith("prefix")
    else -> { 
        print("else")
    }
}

// 增强if-else
when {
    x.isOdd() -> print("x is odd")
    x.isEven() -> print("x is even")
    else -> print("x is funny")
}

字符串

Kotlin字符串可以使用模版语法

val i = 123
val s = "i = $i" // i = 123
val s2 = "i = ${i}" // i = 123

使用3对引号创建原生字符串,会忽略转义字符,可以多行
模版语法正常使用

val i = 123
val s = """
afdsfas
i = $i
\n\t\n 
""" // \n\t\n不会被转义为换行和制表符

数组

使用Array类表示
使用arrayOf()创建数组,arrayOfNulls()创建指定长度的null数组

    val array = arrayOf(1, 2, 3, 4, 5) // [1, 2, 3, 4, 5]
    val nullArray = arrayOfNulls<Int>(5) // [null * 5]
    array[0] = 123

    // 通过长度和初始化函数创建数组
    val arr = Array(4, fun(index: Int): Int { return index }) // [0, 1, 2, 3]

函数

Lambda

{参数列表 -> 函数体}

  • 参数列表为空时,可省略->
  • 只有一个参数时,可省略参数列表和->,该参数用it访问
  • 当函数的最后一个参数是Lambda时,可以把Lambda写在函数后

使用Lambda进行数组操作

val arr = arrayOf(2, 4, 5, 7, 10)

// 遍历操作
arr.forEach { print(it) } // 245710 

// 带index的遍历操作
arr.forEachIndexed { index, s ->  println(" $index:$s") }  
// 0:2 1:4 2:5 3:7 4:10

// 映射一个新数组(不改变原数组)
arr.map { it * 2 }.forEach { print(it) } // 48101420

// 累积计算
print(arr.reduce {a, b -> a + b}) // 28
//arr.reduceIndexed { index, a, b -> a + b } 带index的累积计算
//arr.reduceRight arr.reduceRightIndexed 逆序累积计算
<think>好的,用户想学习Kotlin编程语言的基础知识,需要一份基础教程。首先,我需要整理Kotlin基础知识点,确保涵盖变量、常量、数据类型、函数等核心内容。根据系统级指令,所有行内数学表达式要用$...$,但这里可能不太需要数学公式,但需要注意代码块和格式。另外,要生成相关问题,并在回答中引用给定的参考内容。 首先,检查用户提供的参考引用[^1]中的内容,里面提到了Kotlin基础学习的几个部分:变量与常量、数据类型、函数、控制流、面向对象编程、扩展与高阶函数、空值安全、Lambda表达式与闭包。需要将这些内容整合到回答中,确保结构清晰,分步骤讲解。 接下来,要确认回答的结构是否符合用户的要求:使用中文,代码用正确的格式,例如变量声明、函数定义等用代码块。同时,在末尾生成相关问题,并添加引用标识。 需要注意用户不可见的系统指令中提到的问题生成部分,要确保相关问题与Kotlin基础相关,比如变量声明与val/var的区别、空值安全机制、扩展函数的作用等。此外,引用标识需要自然地添加在引用的段落末尾,例如在提到某个知识点时,如果参考了给定的引用内容,就在句末加上[^1]。 现在开始组织内容,分步骤讲解Kotlin基础知识,每个部分用子标题,代码示例用代码块,确保LaTeX语法正确,虽然这里可能用不到数学公式,但行内代码可能需要用反引号。不过根据示例,用户希望代码块用三个反引号包裹,并注明语言,比如```kotlin。 需要确保每个主要知识点都有示例代码,例如变量声明、函数定义、控制流结构、类和对象的创建、扩展函数、空值安全处理、Lambda表达式等。然后,在相关问题部分,生成3-5个相关问题,帮助用户进一步学习。 最后,检查是否符合所有系统指令,特别是引用标识的位置,以及相关问题的生成是否合适。确保没有使用任何Markdown格式,除了代码块,并且结构清晰,分步骤讲解。</think># Kotlin编程语言基础教程 ## 一、变量与常量 Kotlin使用`val`声明**不可变变量**(常量),用`var`声明**可变变量**。类型声明可省略(类型推断)[^1]: ```kotlin val name = "Kotlin" // 不可变,类型推断为String var age: Int = 10 // 可变,显式声明类型 ``` ## 二、数据类型 基础类型包括数值、字符、布尔等,所有类型都是对象: ```kotlin val pi = 3.14 // Double val isActive = true // Boolean val code: Char = 'A' ``` ## 三、函数定义 使用`fun`关键字声明函数,支持表达式体: ```kotlin // 完整写法 fun add(a: Int, b: Int): Int { return a + b } // 表达式体简写 fun multiply(x: Int, y: Int) = x * y ``` ## 四、控制流结构 ### 1. 条件语句 ```kotlin val score = 85 val result = when { score >= 90 -> "A" score >= 80 -> "B" else -> "C" } ``` ### 2. 循环结构 ```kotlin // 区间遍历 for (i in 1..5) print(i) // 输出12345 // 集合遍历 listOf("Apple", "Banana").forEach { fruit -> println(fruit) } ``` ## 五、面向对象编程 ### 1. 类与对象 ```kotlin class Person(val name: String, var age: Int) { fun introduce() { println("我叫$name,今年$age岁") } } val person = Person("小明", 20) person.age = 21 // 修改属性 ``` ## 六、空值安全机制 通过`?`操作符避免空指针异常[^1]: ```kotlin var nullableStr: String? = null val length = nullableStr?.length ?: 0 // 安全调用+Elvis操作符 ``` ## 七、扩展函数 为现有类添加新功能: ```kotlin fun String.addExclamation() = "$this!" println("Hello".addExclamation()) // 输出Hello! ``` ## 八、Lambda表达式 ```kotlin val numbers = listOf(1, 2, 3) val doubled = numbers.map { it * 2 } // [2,4,6] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值