Kotlin 中变量,类型,表达式,函数详解

简介: Kotlin 中变量,类型,表达式,函数详解

一、变量,编译时变量

1、要声明可修改变量,使用var关键字。

2、要声明只读变量,使用val关键字。

/**
 1. 编译时常量:
 2. 1.只读变量并非绝对只读
 3. 2.编译时常量只能在函数之外定义,因为编译时常量必须在编译时赋值,而函数都是在运行时才调用
 4. 函数内的变量也是在运行时赋值,编译时常量要在这些变量赋值前就已存在。
 5. 3.编译时常量只能是常见的基本数据类型:String、Int、Double、Float、Long、Short、Byte、Short、Char、Boolean
 */
const val MAX = 200 //编译常量,对应于java中的public static final 类加载的时候已经被初始化。
fun main() {
  //类型推断:对于已声明并赋值的变量,它允许你省略类型定义。
    val a: Int = 5
    val str: String = "HELLO"
    println(str)
    println(a)
}

二、Kotlin的引用类型与基本数据类型

  1. Java中有两种数据类型:基本数据类型和引用类型
  2. Kotlin只提供引用类型这一种数据类型,出于更高性能的需要,Kotlin编译器会在Java字节码中改用基本数据类型,来提高性能。

三、Kotlin内置数据类型

四、表达式和String模板

1、表达式

//表达式
//1.if/else if表达式
//2.range表达式
//in A..B,in关键字来检查某个值是否在指定的范围之内
fun main() {
    val age = 4
    if (age in 0..3) {
        println("婴幼儿")
    } else if (age in 3..12) {
        println("少儿")
    } else {
        println("未知")
    }
    if (age !in 1..3) {
        println("测试一下")
    }
    /**
     * when表达式
     * 1.允许你编写条件式,在某个条件满足时,执行对应的代码
     * 2.只要代码包含if,else分支,都建议改用when表达式
     */
    val school = "小学1"
    val level = when (school) {
        "学前班" -> "幼儿"
        "小学" -> "少儿"
        "中学" -> "青少年"
        else -> {
            println("未知")
        }
    }
    println(level)
}

输出结果:

少儿
测试一下
未知
kotlin.Unit

2、String模板

  1. 模板支持在字符串的引号内放入变量值
  2. 还支持字符串里计算表达式的值并插入结果,添加在${}中的任何表达式,都会作为字符串的一部分求值。
fun main() {
    val origin = "Jack"
    val dest = "Rose"
    println("$origin love $dest")
    val flag = false
    println("Answer is:${if (flag) "我可以" else "对不起"}")
}

输出结果:

Jack love Rose
Answer is:对不起

五、创建函数

1、函数结构如下

fun main() {
    println(doSomething(18, false))
    println(fix("Jack"))
    /**
     * 具名函数参数
     * 如果使用命名值,就可以不用管值参的顺序
     */
    println(fix(age = 19, name = "Herr"))
    /**
     * 输出结果:
     * Herr19
     * Kotlin.Unit (这个说明该函数没有返回值,没有返回值的函数叫Unit函数,也就是说他们的返回类型是Unit)
     */
    /**
     * Unit函数:
     * 不是所有的函数都有返回值,Kotlin中没有返回值的函数叫Unit函数,也就是说他们的返回类型是Unit.
     * 在kotlin之前,函数不返回任何东西用void描述,意思是'没有返回类型,不会带来什么,忽略它',也就是说
     * 如果函数不返回任何东西,就忽略类型。但是void这种解决方案无法解释现代语言的一个重要特征,泛型。
     */
    /**
     * TODO函数的任务就是抛出异常,就是永远别指望它运行成功,返回Nothing类型。
     */
    TODO("nothing")
    println("after nothing")
}
//不加可见修饰符,默认为public
fun doSomething(age: Int, flag: Boolean): String {
    return "result"
}
/**
 * 默认值参,如果不打算传入值参,可以预先给参数指定默认值
 */
private fun fix(name: String, age: Int = 2) {
    println(name + age)
}

输出结果:

result
Jack2
kotlin.Unit
Herr19
kotlin.Unit
Exception in thread "main" kotlin.NotImplementedError: An operation is not implemented: nothing
  at kotlin01.FuncationKt.main(Funcation.kt:26)
  at kotlin01.FuncationKt.main(Funcation.kt)

2、反引号中的函数名

/**
 * 反引号中的函数名
 * 1.kotlin可以使用空格和特殊字符对函数命名,不过函数名要用一对反引号括起来
 * 2.为了支持Kotlin和Java互操作,而Kotlin和Java各自却有着不同的保留关键字,不能作为函数名,
 * 使用反引号括住函数名就能避免任何冲突
 */
fun main() {
    //kotlin调用java代码
    MyJava.`is`()
    `**~special funcation with weired name~**`()
}
fun `**~special funcation with weired name~**`() {
    println("special funcation with weired name")
}

输出结果:

is invoked
special funcation with weired name


目录
相关文章
|
1月前
|
Kotlin
Kotlin - 标准函数(with、run和apply)
Kotlin - 标准函数(with、run和apply)
8 1
|
7月前
|
编译器 C++ Kotlin
【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val
【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val
40 0
|
10月前
|
API Kotlin
Kotlin中扩展函数、infix关键字、apply函数和DSL的详解
Kotlin中扩展函数、infix关键字、apply函数和DSL的详解
85 0
|
10月前
|
安全 Java Kotlin
Kotlin中空安全操作符,异常处理和自定义异常,以及先决条件函数详解
Kotlin中空安全操作符,异常处理和自定义异常,以及先决条件函数详解
95 0
|
8月前
|
存储 Java 编译器
Kotlin 学习笔记(四)—— 作用域函数、inline 关键字、反引号等 Kotlin 基本用法(下)
Kotlin 学习笔记(四)—— 作用域函数、inline 关键字、反引号等 Kotlin 基本用法(下)
36 0
|
8月前
|
Java Android开发 开发者
Kotlin 学习笔记(四)—— 作用域函数、inline 关键字、反引号等 Kotlin 基本用法(上)
Kotlin 学习笔记(四)—— 作用域函数、inline 关键字、反引号等 Kotlin 基本用法(上)
61 0
|
10月前
|
安全 Java 编译器
Kotlin 学习笔记(一)—— 基本类型、函数、lambda、类与对象的写法
Kotlin 作为 Android 开发的首选语言,其基础语法和特性需要重点学习。本文概括总结了 Kotlin 的基本类型、关键字、函数、闭包、高阶函数、类与对象等核心知识点,并给出示例代码进行讲解。
159 0
Kotlin 学习笔记(一)—— 基本类型、函数、lambda、类与对象的写法
|
10月前
|
Java Kotlin
Kotlin中与Java互操作与可空性、类型映射、属性访问、@JvmOverloads、@JvmField、@JvmStatic、@Throws和函数类型操作详解
Kotlin中与Java互操作与可空性、类型映射、属性访问、@JvmOverloads、@JvmField、@JvmStatic、@Throws和函数类型操作详解
73 0
|
10月前
|
Kotlin
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
63 0
|
15天前
|
安全 Java Android开发
使用Kotlin进行Android应用开发:高效、简洁与乐趣并存
【6月更文挑战第1天】Kotlin,JetBrains开发的静态类型语言,正日益成为Android开发首选。它与Java兼容,提供简洁、安全的语法,如空安全、扩展函数和Lambda表达式,提升开发效率和代码可读性。Kotlin在Android开发中的优势包括提高开发速度、降低学习曲线及强大的社区支持。实践中,数据类简化对象创建,扩展函数增强SDK,Lambda表达式简化回调处理,协程优化异步操作。掌握Kotlin对Android开发者极具价值。