type
status
date
slug
summary
tags
category
icon
password
归纳自runoob.com

一、基础语法

文件与包声明

Kotlin源文件以 .kt 为后缀。包声明位于文件顶部,用于组织代码命名空间。
要点:
  • 源文件可以放在任何目录,不强制要求与包名匹配的目录结构。
  • 没有指定包名的文件属于默认包(不推荐在生产环境中使用)。
  • 每个Kotlin文件都会默认导入一系列核心包(如 kotlin.*, kotlin.collections.*等)。

变量声明

Kotlin使用 valvar关键字声明变量,支持类型推断。
核心区别:
  • val(value):类似Java的final变量,只读,一旦赋值不可更改。
  • var(variable):可变变量,值可以重新分配。
最佳实践: 优先使用 val以确保状态不可变,提升代码安全性。

函数定义

使用 fun关键字定义函数。

空安全设计

Kotlin的类型系统旨在消除空指针异常(NullPointerException)。
处理可空返回值的函数:

字符串模板

使用 $符号在字符串中嵌入变量或表达式,简化字符串拼接。

类型检查与智能转换

使用 is!is进行类型检查,检查成功后编译器会自动进行智能转换

区间与循环

Kotlin提供了直观的区间表达式,常用于循环和条件判断。

条件表达式

ifwhen在Kotlin中不仅是语句,还可以是表达式(有返回值)。

其他重要语法

  • 注释: 支持单行(//)和多行注释(/* ... */),且块注释允许嵌套
  • 相等性判断: 使用 ==检查结构相等(相当于调用 equals()),使用 ===检查引用相等。
  • Lambda表达式: 一种简洁的匿名函数写法。
     

    二、基础数据类型

    基本数据类型概览

    Kotlin的基本数据类型可分为以下几类,与Java不同,所有类型都是对象:
    类别
    数据类型
    位宽
    范围/描述
    整数类型
    Byte
    8位
    -128 到 127
    Short
    16位
    -32,768 到 32,767
    Int
    32位
    -2³¹ 到 2³¹-1
    Long
    64位
    -2⁶³ 到 2⁶³-1
    浮点类型
    Float
    32位
    6-7位有效数字
    Double
    64位
    15-16位有效数字
    其他类型
    Char
    16位
    Unicode字符
    Boolean
    -
    true/false
    String
    -
    字符序列

    数值类型详解

    a、整数类型

    类型推断规则:
    • 未超出Int最大值(2147483647)的整数值默认为Int类型
    • 超过Int最大值则推断为Long类型
    • 数字后加L显式表示Long类型

    b、浮点类型

    重要特性:
    • Kotlin对小数默认推断为Double类型
    • Float类型精度约为6-7位十进制数字,超出部分会精度丢失
    • 不存在隐式拓宽转换,必须显式指定类型

    字面常量表示法

    Kotlin支持多种字面常量表示方式:

    类型转换

    a、显式类型转换

    Kotlin不支持隐式类型转换,必须使用转换函数:
    常用转换函数:
    • toByte(), toShort(), toInt(), toLong()
    • toFloat(), toDouble(), toChar()

    b、自动类型转换场景

    在特定上下文环境中,Kotlin会自动进行类型转换:

    字符类型(Char)

    与Java的区别:
    • Char不能直接当作数字使用
    • 必须用单引号括起来
    • 支持Unicode转义序列

    字符串类型

    a、字符串表示

    b、字符串模板

    数组类型

    a、数组创建方式

    b、数组操作

    类型比较与相等性

    a、比较运算符

    b、结构相等 vs 引用相等

    位运算

    Kotlin使用中缀函数进行位运算,而非符号:
    位运算函数:
    • shl(bits)左移
    • shr(bits)右移
    • ushr(bits)无符号右移
    • and(bits), or(bits), xor(bits), inv()

    关键特性总结

    1. 全对象化:所有基本类型都是对象,具有方法和属性
    1. 无隐式转换:必须显式进行类型转换,提高类型安全性
    1. 类型推断:编译器能自动推断变量类型,代码更简洁
    1. 空安全:可空类型需要显式声明(如Int?
    1. 数组不协变:与Java不同,Kotlin数组是不协变的
    Git嵌入式构件
    Loading...