Kotlin学习笔记(一)

本文介绍了Kotlin的基础知识,包括执行过程、变量与常量(如只读变量与类型推断)、表达式(如range和when表达式)、函数(含默认值参数与具名参数)以及无返回值的Unit类型。通过实例展示了Kotlin的灵活性和简洁性,适合初学者入门学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

先吹一波

Kotlin执行过程

变量与常量

表达式

函数

定义一个函数

无返回值类型

Unit类型

反引号中的函数名

先吹一波

 

Kotlin执行过程

变量与常量

常用数据类型

Hello World案例

fun main() {
    // var用于声明变量;str是变量名,后面追加“:”与变量类型隔开;String是变量类型,
    var str: String = "Hello World"
    println(str)
}

由上面的 案例可以总结出,我们在KT中初始化一个变量格式如下:

 只读变量

声明可修改变量,使用var关键字。
声明只读变量,使用val关键字。

//只读变量并非绝对只读
val str2="我是只读变量"
//str2="改变值,哎呦报错了!"

为什么说只读变量并非只读?

var和 val最大的区别就是是否设置了 get和 set,我们都知道 var同时设置 get和 set,但是在 val中只有 get,但当 val变量作为成员变量时,我们修改其 get方法

class Kt01 {
    var currentAge = 10
    val age: Int
        //coerceAtLeast 表示返回值至少是36
        get() = currentAge.coerceAtLeast(36)
}

fun main() {
    val kt01 = Kt01()
    println("age = ${kt01.age}")
    kt01.currentAge = 66
    println("30年后,age = ${kt01.age}")
}

 

发现被 val修饰的 age变成66了 。

类型推断

对于已初始化的变量,kt允许我们省略类型定义。

 编译时常量

const val MY_NAME: String = "luffy"
const val MAX: Int = 666
const val DOUBLE: Double = 66.88
const val FLOAT: Float = 66.99F
const val LONG: Long = 2021L
const val SHORT: Short = 2
const val BYTE: Byte = 6
const val CHAR: Char = 'A'
const val BOOLEAN: Boolean = true
fun main() {
    println(MY_NAME)
    println(MAX)
    println(DOUBLE)
    println(FLOAT)
    println(LONG)
    println(SHORT)
    println(BYTE)
    println(CHAR)
    println(BOOLEAN)
}

Kotlin的数据类型 

kotlin只提供引用数据类型这一种数据类型,出于更高性能的考虑,kotlin编译器会在Java字节码中改用基本数据类型。

注:双击shift,输入show kotlin bytecode即可查看kotlin字节码。或者Tools->Kotlin->Show Kotlin Bytecode。

表达式

if / if else / if else if 表达式跟Java一样,不再赘述。

rang表达式:in A..B,in关键字用来检查某个值是否在指定范围之内,比如 in..100 表示[1,100]闭区间,in 后面也可以跟 List、Map等。

const val MONEY: Int = 399
fun main() {
    // Rangs表达式,原型:override fun contains(value: Int): Boolean = first <= value && value <= last
    if (MONEY in 1..100) {
        println("您可预约单身公寓")
    } else if (MONEY in 101..200) {
        println("您可预约大床房")
    } else if (MONEY in 201..360) {
        println("您可预约情侣商旅酒店")
    } else {
        println("贵宾您办卡的话本次消费免费哟~")
    }
}
    val age = 3
    val ageList = listOf(1, 2, 3, 4, 5, 6, 7, 8)
    if(age in ageList){
        println("${age}岁大的人是婴幼儿。")
    }

 when表达式

与C和Java中的switch...case语句类似,表示满足某个条件,执行指定代码,只要代码包含else if,都可以用when表达式替代。

const val school = "大学"
fun main() {
    main1()
    val level = when (school) {
        "幼儿园" -> "幼儿"
        "小学" -> "儿童"
        "中学" -> "少年"
        "大学" -> "大龄儿童"
        "工作三五年" -> "油腻大叔"
        else -> "你怕是神仙吧~"
    }
    print(level)
}

String模板
①模板支持在字符串的双引号中放入变量;
②支持字符串中插入表达式的值,表达式需要插入到${}中。

fun main() {
    val food = "carrot"
    println("My favorite is $food")
    println("1比2大?${if (1 > 2) "对的" else "不对"}")
}

函数

定义一个函数

格式:

入参放在前面更科学,先有输入后有输出。
案例: 

fun main() {
    val sum = getSum(1, 5)
    println(sum)
}

/**
 * private是修饰符,不指定修饰符,默认是public
 * fun是声明函数的关键字
 * getSum是函数名
 * 小括号里面的a和b分别是函数参数,Int是参数类型
 * Int是返回值类型
 */
private fun getSum(a: Int, b: Int): Int {
    return a + b
}

默认值参(Java没有这种语法)

如果不打算传入值参,可以预先给参数指定默认值。

/**
 * 如果不打算传入值参,可以预先给参数指定默认值。
 * 比如该函数第二个参数默认传入“Honey”
 */
private fun doSomething(firstOne: String, secondOne: String = "Honey") {
    println("$firstOne love $secondOne forever")
}

具名函数参数(Java没有这种语法)

如果使用命名值参,可以不用关心值参顺序。

    //具名值参
    doSomething(secondOne = "Honey",firstOne = "Luffy")

无返回值类型

Unit类型

不是所有的函数都有返回值,kt中没有返回值的函数叫Unit函数,Unit跟Java中的void类型比较像,都表示无返回值类型,但是 void无法解释泛型这一现代语言特性。

    //kotlin.Unit 无返回值类型
    println(doSomething("Luffy"))

 Noting类型

    //Nothing类型:内置函数TODO返回值就是Noting
    TODO("你不要走好不好,跑起来,哇哈哈哈,快,跑起来!")
    println("after TODO")

我们可以参照TODO的方式返回Nothing类型,终止我们的程序。

反引号中的函数名

Kotlin可以使用空格和特殊字符对函数命名,不过函数名需要用一堆反引号括起来。这种写法是为了支持Kotlin和Java互操作,因为Kotlin和Java各自有不同的关键字,不能作为函数名,使用反引号可以避免冲突。

fun main() {
    MyJava.`is`()
}

/**
 * 测试特殊功能的函数
 */
fun `**special function of test special function**`(){

}

这一讲先讲这么多,欲知后事如何,且听下回分说~欢迎大家评论加点赞,大伙的支持对我很重要哦(≧◉◡◉≦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值