kotlin基础【1】

kt主函数:

main函数是kotlin程序的入口函数,是计算机运行起来第一个默认找的第一个运行的函数

Kotlin 复制代码
fun main(args:Array<String>){
	println("hello world")
}

主函数各部分功能介绍:

kotlin常用数据类型:

可以通过设置最大最小值,查看这些类型的范围

Kotlin 复制代码
fun main(args:Array<String>){
	val aByte:Byte = Byte.MAX_VALUE
	val bByte:Byte = Byte.MIN_VALUE
	println("Byte 最大值"+aByte);
	println("Byte 最大值"+bByte);

	val aLong:Long = Long.MAX_VALUE
	val bLong:Long = Long.MIN_VALUE
	println("Long 最大值"+aLong);
	println("Byte 最大值"+bLong);
}

注意:kotlin相比于Java 没有 int 和 Integer,只有int类型

Kotlin 复制代码
fun main(args:Array<String>){
	saveLog(6)
}
fun saveLog(logLevel:Int){
	println("LogLevel:$logLevel")
}

此外还有:

1. 字符类型

  • Char :表示单个字符,用单引号 ' 包裹,如 'a''中'。与 Java 不同,Kotlin 的 Char 不能直接当作数字使用。

2. 布尔类型

  • Boolean :只有 truefalse 两个值,用于逻辑判断。
Kotlin 复制代码
fun main(args:Array<String>){
	val check = checkAge(76)
	println("年龄是否大于65周岁:$check")
}
fun checkAge(age:Int):Boolean{
	return age>65
}

3. 数组类型

  • Array :通用数组类型,可存储任意类型元素,如 Array<Int>Array<String> (主函数就使用的是这个)
Kotlin 复制代码
fun main(args:Array<String>){
	println("hello world")
}
  • 基本类型专用数组:为避免自动装箱开销,提供了 IntArrayLongArrayBooleanArray 等,分别对应基本类型数组。

4. 集合类型(位于 kotlin.collections 包)(这是后话)

  • List :有序集合,元素可重复,如 listOf(1, 2, 3)(不可变)、mutableListOf(1, 2, 3)(可变)。
  • Set :无序集合,元素不可重复,如 setOf(1, 2, 3)(不可变)、mutableSetOf(1, 2, 3)(可变)。
  • Map :键值对集合,键唯一,如 mapOf(1 to "a", 2 to "b")(不可变)、mutableMapOf(1 to "a")(可变)。

kotlin智能变量推断

编译器能够自动根据变量的赋值语句推断出变量类型,

Kotlin 复制代码
val name = "Alice"  // 推断为 String
val age = 30        // 推断为 Int
val height = 1.75   // 推断为 Double
val isStudent = true // 推断为 Boolean

kt变量类型经过确定之后,可以强制转换,这是后话。未转换之前如果给类型赋超过其自身范围的会报错

显式声明变量类型

显式类型声明通过在变量名后添加 : 类型 来实现:

Kotlin 复制代码
val name: String = "Alice"
var age: Int = 30
val height: Double = 1.75
val isStudent: Boolean = true

kt的函数格式

无返回值

返回值类型为unit 相当于java的void,也可以省略不写,如主函数就是省略不写

省略不写

Kotlin 复制代码
fun main(args:Array<String>){
	println("hello world")
}
Kotlin 复制代码
// 显式声明 Unit
fun printMessage(message: String): Unit {
    println(message)
}

有返回值

Kotlin 复制代码
fun 函数名(参数列表): 返回类型 {
    // 函数体
    return 返回值
}

返回Int

Kotlin 复制代码
fun sum(a: Int, b: Int): Int {
    return a + b
}

返回String

Kotlin 复制代码
fun getGreeting(name: String): String {
    return "Hello, $name!"
}

返回Boolean

Kotlin 复制代码
fun getA(score: Int): Boolean{
    return score>90
}

返回Char

Kotlin 复制代码
fun getCharAtIndex(str: String, index: Int): Char {
    return if (index in str.indices) str[index] else ' '//获取指定位置的字符
}

练习

请编写函数,函数名为sayHello 方法返回值是String类型,一个参数是String类型名称为name

请编写函数,函数名为checkAge方法的返回值是Boolean类型,一个参数是整数类型名称为age

请编写函数,函数名为saveLog方法没有返回值一个参数是整数类型名称为logLevel

Kotlin 复制代码
fun main(args:Array<String>){
	val helloName = sayHello("张三")
	println(helloName)

	val check = checkAge(76)
	println("年龄是否大于65周岁:$check")
	saveLog(6)
}
fun sayHello(name:String):String{
	println("name = "+name)
	return "hello,$name"
}
fun checkAge(age:Int):Boolean{
	return age>65
}
fun saveLog(logLevel:Int){
	println("LogLevel:$logLevel")
}

KT字符串是否相等

Kotlin 复制代码
fun main(args:Array<String>){
    val str1 ="Andy"
	val str2 = "Andy"
	val str3 ="andy"

	println(str1==str2)
	println(str1.equals(str2))
	println(str1.equals(str3,true))
	println(str1.equals(str3,false))
}
Kotlin 复制代码
true
true
true
false

前2个和java基本相同,在安卓基本使用

java 复制代码
boolean isEqual1 = str1.equals(str2);
Kotlin 复制代码
println(str1.equals(str3,true))
println(str1.equals(str3,false))

指的是true 无视大小写,false,区分大小写

日志打印

Kotlin 复制代码
fun main(args:Array<String>){
    val age =75
	checkAge(age)
}
fun checkAge(age:Int){
    if(age>65){
		println("${age:这是一个老人")
	}else{
		println("$age:这是一个年轻人")
	}
}

在上述代码中,"age:这是一个老人"和 "{age}:这是一个老人"`两种写法都是正确的,效果完全一致。

当变量是一个简单的标识符(如单个变量名 age)时,age 和 {age} 没有区别,都会正确解析变量值

当需要解析更复杂的表达式(如 user.name 或 {user.name},或 {age + 10})时,必须使用 \`{}` 包裹 在你的代码中,由于只是简单的变量 `age`,两种写法均可。`"age:这是一个老人"\` 更简洁,是更常见的写法;而 \`{age}` 写法在这种场景下属于冗余但合法的语法。 所以你的原始代码写法是完全正确的,不需要修改为 `${age}` 形式。

函数非空判断

Kotlin 复制代码
fun main(args:Array<String>){
    val str1 ="张三"
	val str2 = "Andy"
	val str3 ="andy"

	println(heat(str1))
    println(heat(null))
	println(heat1(null))

}
fun heat(matter:String):String{
    return "打倒$matter"
}
fun heat1(matter:String?):String{
    return "打倒$matter"
}

函数参数为,表示不接受null值,

Kotlin 复制代码
fun heat(matter:String):String{
    return "打倒$matter"
}

因此会报错

Kotlin 复制代码
println(heat(null))

表示函数能够接受空值

Kotlin 复制代码
fun heat1(matter:String?):String{
    return "打倒$matter"
}

输出:

Kotlin 复制代码
打倒null

when语句

Kotlin 复制代码
when (变量/表达式) {
    条件1 -> 执行语句1
    条件2 -> 执行语句2
    条件3, 条件4 -> 执行语句3  // 多个条件匹配同一结果
    in 范围 -> 执行语句4        // 检查是否在指定范围内
    !in 范围 -> 执行语句5       // 检查是否不在指定范围内
    is 类型 -> 执行语句6        // 检查类型
    else -> 执行语句7           // 所有条件都不匹配时执行(相当于default)
}
Kotlin 复制代码
fun main(args: Array<String>) {
    val score1 = 59
    val score2 = 60
    val score3 = 100
    val score4 = 75  // 测试中间值
    val score5 = 90  // 测试中间值

    println("$score1 分: ${gradeStudent(score1)}")
    println("$score2 分: ${gradeStudent(score2)}")
    println("$score3 分: ${gradeStudent(score3)}")
    println("$score4 分: ${gradeStudent(score4)}")
    println("$score5 分: ${gradeStudent(score5)}")
}

fun gradeStudent(score: Int): String {
    val str = when(score) {
        in 0..59 -> "不及格"    // 0到59分
        60 -> "及格"            // 正好60分
        in 61..80 -> "良好"     // 61到80分
        in 81..99 -> "优秀"     // 81到99分
        100 -> "满分"           // 正好100分
        else -> "异常"          // 超出0-100范围的分数
    }
    return str
}
相关推荐
hqxstudying14 分钟前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
最初的↘那颗心18 分钟前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文
小兔兔吃萝卜24 分钟前
Spring 创建 Bean 的 8 种主要方式
java·后端·spring
德育处主任28 分钟前
p5.js 掌握圆锥体 cone
前端·数据可视化·canvas
mazhenxiao31 分钟前
qiankunjs 微前端框架笔记
前端
无羡仙37 分钟前
事件流与事件委托:用冒泡机制优化前端性能
前端·javascript
秃头小傻蛋38 分钟前
Vue 项目中条件加载组件导致 CSS 样式丢失问题解决方案
前端·vue.js
CodeTransfer38 分钟前
今天给大家搬运的是利用发布-订阅模式对代码进行解耦
前端·javascript
阿邱吖39 分钟前
form.item接管受控组件
前端
韩劳模41 分钟前
基于vue-pdf实现PDF多页预览
前端