IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【编程语言】Kotlin笔记 -> 正文阅读

[移动开发]【编程语言】Kotlin笔记

基础语法

变量

val(value简写)声明一个不可变变量。

var(variable的简写)声明一个可变变量。

显式声明变量类型:

val a: Int = 10

JAVA和Kotlin数据类型对应关系

JAVAKotlin
intInt
longLong
shortShort
floatFloat
doubleDouble
booleanBoolean
charChar
byteByte

函数

fun 函数名(变量名:数据类型....:数据类型(返回值)
{
    
}

逻辑控制语句

if语句 可作为返回值

if(条件)
{
    
}
else
{
    
}
//精简写法
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

when语句

fun getScore(name: String) = when (name) {
    "Tom" -> 86
    "Jim" -> 77
    "Jack" -> 95
    "Lily" -> 100
    else -> 0
}
匹配值 -> { 执行逻辑 }
//类型匹配
fun checkNumber(num: Number) {
    when (num) {
        is Int -> println("number is Int")
        is Double -> println("number is Double")
        else -> println("number not support")
    }
}

while语句

while(执行条件)
{
    
}

for循环

for(i in collection)
{
    
}
//默认遍历步长为一,若修改遍历步长:
fun main() {
    for (i in 0 until 10 step 2) {
        println(i)
    }
}

downto 关键字

//降序遍历
fun main() {
    for (i in 10 downTo 1) {
        println(i)
    }
}

class 类名{}
//实例化
val p = 类名()
//继承
open class 类名{} //表示该类可以被继承
class Student:Person(){} 

主构造函数

  • 就是默认的无参构造,没有函数体。可以通过init结构体来对其进行一些操作。
init
{
    println(".....")
}

次构造函数

  • 次构造函数通过constructor关键字定义
class Student(val sno:String,val grade:Int,name:String,age:Int):Person(name,age)
{
    constructor(name:String,age:Int):this("",0,name,age){ }
    constructor():this("",0){}
}

接口

//声明
interface Study
{
    fun readBooks()
    fun doHomework()
}
//实现
class Student(name:String,age:Int):Person(name,age),Study
{
    override fun readBooks() {
        println("ReadBook......")
    }

    override fun doHomework() {
        println("doHomework.....")
    }

}

数据类

在要成为数据类的前面添加data关键字即可使该类成为数据类。

data class Cellphone(val brand:String,val price:Double)

数据类的好处是kotlin会自动根据主构造函数中的参数生成equals、hashCode()、toString()等固定且无实际意义的方法自动生成。

单例类

public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public synchronized static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    public void singletonTest() {
        System.out.println("singletonTest is called.");
    }
}

可空类型

类名+? 如:Int? String?

判空辅助工具

  • 对象?.函数 对象不为空正常调用方法,为空时什么都不做。
  • ?: 左边表达式的结果不为空就返回左边表达式的结果,否则就返回右边表达式的结果。
  • !! 强制通过编译,在对象后面加上!! 。

Lambda

一小段可以作为参数传递的代码。

Lambda表达式结构

{参数名1:参数类型,参数名2:参数类型->函数体} //前面为参数列表
//对于单个与只有一个参数的Lambda表达式可以简写为
 	var a = listOf(1,2,3,4,5,6)
    a = a.map { it+1 }
    for (i in a)
    {
        print("\t"+i)
    }
//输出为:
	2	3	4	5	6	7

集合创建与遍历

listOf创建的是一个不可变集合,不能调用添加或者删除方法。

//创建
val list = listOf("Apple","Banana","Orange","Pear","Grape")
//遍历
 for (i in list)
 {
    println(i)
 }

类似的如set集合可以使用setOf进行创建,也可以通过可变函数创建mutableSetOf(),以上创建的为可变集合。

特别的,对于Map,因为Map集合是以键值对的形式存在:

val map = mapOf("apple" to 1)

集合函数

maxByOrNull

val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val maxLengthFruit = list.maxBy { it.length }
println("max length fruit is " + maxLengthFruit)

map,映射函数,Lambda中指定映射规则。

  val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
    val fruit = list.map { it.uppercase(Locale.getDefault()) }
    for (i in fruit)
    {
        println(i)
    }

filter ,过滤函数,Lambda中指定过滤规则。

   val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
    val fruit = list.filter { it.length<=4 }.map { it.uppercase(Locale.getDefault()) }
    for (i in fruit)
    {
        println(i)
    }

any和all
any存在满足条件的即返回true
all全部满足条件返回true

val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
    val anyResult = list.any{ it.length<=5 }
    val allResult = list.all { it.length<=5 }
    println("anyResult is $anyResult, allResult is $allResult")
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:51:06  更:2022-05-09 12:53:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:01:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码