栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【编程语言】Kotlin笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【编程语言】Kotlin笔记

Kotlin
    • 基础语法
      • 变量
      • 函数
      • 逻辑控制语句
      • 接口
      • 数据类
      • 单例类
      • 可空类型
    • Lambda
      • Lambda表达式结构
      • 集合创建与遍历
      • 集合函数

基础语法 变量

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")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号