首页 > 其他分享 >kotlin语法

kotlin语法

时间:2023-04-21 11:25:18浏览次数:40  
标签:范型 内置 函数 kotlin 语法 调用 类型

kotlin语法

zhuanlan.zhihu.com残枫cps

目录

收起

语法基础

kotling语言和JVM虚拟机

声明变量和内置数据类型

只读变量

类型推断

编译时常量

kotlin反编译后字节码

kotlin生成字节码文件之后,交给jvm运行,和java一样工具步骤:tools -> kotlin -> show totlin bytecode

引用类型

range表达式

when表达式

String模版

函数头

函数参数的默认参数

Unit函数特点

Noting类型特点

反引号函数名特点

匿名函数

函数类型&隐式返回 :先声明函数,然后实现该函数

函数参数

it关键字特点:函数中参数只有一个时,it相当于所传参数

匿名函数的类型推断:其实就是var method = 方法的实现

lambda

在函数中定义参数是函数:kt中可用于函数回调,但是在java中回调需要定一个的interface

函数内联:inline,有函数参数是lambda为参数

函数引用 ::

函数类型作为返回类型

匿名函数和具名函数

可空性特点

安全调用操作符: ?. 为null的时候,调用代码不执行,后面是代码是可执行的

let的安全调用

非空断言操作符特点

对比使用if判断null值情况

空合并操作符

语法中异常处理与自定义异常特点

先决条件函数

subString:截取字符串

split:分割

replace完成加密解码

==与===比较操作 字符串常量池

字符串遍历

数字类型的安全转换函数

Double转Int与类型格式化

内置函数

apply内置函数:始终返回本身

let内置函数

run内置函数

with内置函数

also内置函数

takeIf内置函数

takeUnless内置函数

集合

List创建于元素获取

可变List集合:MutableList

mutator函数

集合遍历

解构语法过滤元素

Set创建于元素获取

可变Set:MutablseSet

集合转换与快捷函数

数组类型

Map的创建

读取Map的值

Map遍历

可变Map

class类

主构造函数

次构造函数

初始化块:主构造函数的方法体

延迟初始化lateinit

惰性初始化by lazy

初始化陷阱

继承与重载的open关键字

类型转换

智能类型转换

Any超类 == java Object

对象声明:object 单例

对象表达式

伴生对象:companion object == Java内部静态类 kt中没有static静态

内部类与嵌套类

数据类

copy函数

解构声明

运算符重载

枚举类

枚举类定义函数

代数数据类型

密封类

数据类使用条件

接口定义

接口的默认实现

抽象类

范型

范型类定义

范型函数

范型变换

范型类型约束

vararg关键字

out-协变 in-逆变

reified关键字

扩展函数

定义扩展函数

范型扩展函数

扩展属性

可空类型扩展函数

infix关键字 中缀函数

扩展文件 iterable 扩展函数组成的文件,调用的时候import引用

重命名扩展:把引用的扩展函数重新命名,简化函数名

DSL:领域专用语言

变换函数map变换函数flatmap

过滤函数filter

合并函数

函数式编程

Java与kt调用 可空性

单例模式

注解

@JvmName :编译时修改类的名字,方便Java的调用

@JvmFeild:val类成员上面,可以去除类成员get方法,改成public修饰

@JvmOverLoads 把多参数的函数方法重载,Java调用时就可以不用管kt函数的默认参数

@JvmStatic 把一个在伴生匿名对象里的函数变成一个静态函数,方便java调用

手写rxJava

语法基础

kotling语言和JVM虚拟机-

-

声明变量和内置数据类型-

只读变量-

-

类型推断-

编译时常量

-

kotlin反编译后字节码-

kotlin生成字节码文件之后,交给jvm运行,和java一样-

工具步骤:tools -> kotlin -> show totlin bytecode-

引用类型-

-

range表达式-

-

when表达式-

-

String模版-

-

函数头-

-

函数参数的默认参数-

具名函数参数:调用方法不用按特定的顺序-

-

Unit函数特点-

-

Noting类型特点-

-

反引号函数名特点

` ` 这个可以写含有中文和数字的的方法;调用java方法,但是在kotlin中方法名字是关键字,可以把方法名用这个` `包起来就可以调用了-

-

匿名函数-

-

函数类型&隐式返回 :先声明函数,然后实现该函数-

-

函数参数-

-

it关键字特点:函数中参数只有一个时,it相当于所传参数-

-

匿名函数的类型推断:其实就是var method = 方法的实现-

-

lambda-

-

在函数中定义参数是函数:kt中可用于函数回调,但是在java中回调需要定一个的interface

kotlin的写法如下:-

java的写法如下:-

-

函数内联:inline,有函数参数是lambda为参数-

-

函数引用 ::-

-

函数类型作为返回类型-

-

匿名函数和具名函数-

Java的写法:-

-

可空性特点-

-

安全调用操作符: ?. 为null的时候,调用代码不执行,后面是代码是可执行的-

-

let的安全调用-

-

非空断言操作符特点-

-

对比使用if判断null值情况-

-

空合并操作符-

-

语法中异常处理与自定义异常特点-

-

先决条件函数

判断null,抛出异常:checkNotNull requireNotNull-
判断false,抛出异常:require-

-

subString:截取字符串-

-

split:分割-

-

replace完成加密解码-

-

==与===比较操作 字符串常量池

name1和name2是用一个引用,因为:字符串常量池,创建了第一个字符串,创建第二个同样的值时,不会新建,所以name1和name2是同一个引用。-

上面图中的输出值为false

-

字符串遍历-

-

数字类型的安全转换函数-

-

Double转Int与类型格式化

toInt()是取下取整数,去除小数点后面的;图中有错误-

-

内置函数-

-

apply内置函数:始终返回本身-

-

let内置函数-

-

run内置函数-

-

with内置函数-

-

also内置函数-

-

takeIf内置函数

takeIf(boolean) 如果boolean为true,则返回this本身,否则null-

-

takeUnless内置函数-

-

集合

-

List创建于元素获取-

-

可变List集合:MutableList-

-

mutator函数-

-

集合遍历-

-

解构语法过滤元素-

-

Set创建于元素获取-

-

可变Set:MutablseSet-

-

集合转换与快捷函数-

-

数组类型-

-

Map的创建-

-

读取Map的值-

-

Map遍历-

-

可变Map-

-

class类-

-

主构造函数-

-

次构造函数-

-

初始化块:主构造函数的方法体-

构造初始化顺序 :(生成的字节码文件顺序:类成员先声明(可以直接赋值) -> 执行init{}里面的内容 -> 写在init{}后天面的类成员有赋值的再赋值; )-

-

延迟初始化lateinit-

-

惰性初始化by lazy

普通方式-

by lazy :懒汉式-

-

初始化陷阱-

-

继承与重载的open关键字

kt类class默认public final 修饰,所以不能被继承-
kt中函数默认public final 修饰,所以不能被重写-

-

类型转换-

-

智能类型转换-

-

Any超类 == java Object-

-

对象声明:object 单例-

-

对象表达式-

-

伴生对象:companion object == Java内部静态类 kt中没有static静态-

-

内部类与嵌套类-

-

数据类-

-

copy函数-

-

解构声明-

-

运算符重载-

-

枚举类-

-

枚举类定义函数

-

代数数据类型-

-

密封类-

-

数据类使用条件-

-

接口定义-

-

接口的默认实现-

-

抽象类-

-

范型

-

范型类定义-

-

范型函数-

-

范型变换-

-

范型类型约束-

-

vararg关键字-

-

out-协变 in-逆变

-

reified关键字

-

扩展函数

-

定义扩展函数-

-

范型扩展函数-

-

扩展属性-

-

可空类型扩展函数-

-

infix关键字 中缀函数-

-

扩展文件 iterable 扩展函数组成的文件,调用的时候import引用-

-

重命名扩展:把引用的扩展函数重新命名,简化函数名-

-

DSL:领域专用语言-

-

变换函数map

变换函数flatmap

-

过滤函数filter

-

合并函数-

-

函数式编程

-

Java与kt调用 可空性-

-

单例模式

饿汉式-

kt : object ClassName-
懒汉式-

懒汉式加锁 :防止多线程 synchronized-

懒汉式 volatile 线程安全-

-

注解

-

@JvmName :编译时修改类的名字,方便Java的调用-

-

@JvmFeild:val类成员上面,可以去除类成员get方法,改成public修饰-

-

@JvmOverLoads 把多参数的函数方法重载,Java调用时就可以不用管kt函数的默认参数-

-

@JvmStatic 把一个在伴生匿名对象里的函数变成一个静态函数,方便java调用-

-

手写rxJava-

跳转到 Cubox 查看

标签:范型,内置,函数,kotlin,语法,调用,类型
From: https://www.cnblogs.com/cps666/p/17339707.html

相关文章

  • 在Java代码中更优雅地调用Kotlin
    -Kotlin与Java良好的互操作性是其能够快速普及的原因之一。从Java虽然可以访问Kotlin,但是通过下面这些技巧可以让对Kotlin的访问变得更加友好和地道@JvmStaticKotlin中可以使用objectclass创建单例objectAnalytics{funinit(){...}funsend(event:Event){...}......
  • 对kotlin友好的现代 JSON 库 moshi 基本使用和实战
    对kotlin友好的现代JSON库moshi基本使用和实战blog.csdn.net成就一亿技术人!前言上一篇博客我们聊了下gson在处理kotlindataclass时的一些坑,感兴趣的可以了解一下:gson反序列化成dataclass时的坑总结一下有一下两点属性声明时值不能为null,结果反序列化后值为null,跟预......
  • C语法
    原文地址zhuanlan.zhihu.comC语法残枫cps​目录收起void指针NULL指针指向指针的指针常量常量指针与指向常量的指针可变参数va_list是类型函数:函数名=函数地址指针函数函数指针函数指针作为参数函数指针作为返回值全局变量extern关键字作用域链接属性void指针NULL......
  • 推荐使用 Kotlin 关键字 Reified
    原文地址zhuanlan.zhihu.com推荐使用Kotlin关键字Reified残枫cps​目录收起1.不再需要传参数clazzreified方式2.不安全的转换reified方式3.不同的返回类型函数重载reified方式原文地址www.jianshu.comreified:使抽象的东西更加具体或真实,非常推荐Android开......
  • sql部分语法
    原文地址zhuanlan.zhihu.comsql部分语法残枫cps​目录收起mysqldumpIF表达式IFNULL(expr1,expr2)IFELSE做为流程控制语句使用INNERJOINLEFTJOINRIGHTJOINFULLOUTERJOINcasewhenthenmysqldumpmysqldump用来备份数据库或在不同数据库之间迁移数据,mydqldump的备份内......
  • makedown语法
    这是一级标题这是二级标题这是三级标题#这个Python代码块print("helloworld!!!")#这个shell语句ifconfig引用:这是引用内容有序排序helloworld无序排序helloworld姓名年龄小明18加粗字体斜体字体加粗斜体字体这是个百度123超链接地......
  • 11、Markdown 转义字符语法
    11、Markdown转义字符语法要显示原本用于格式化Markdown文档的字符,请在字符前面添加反斜杠字符\。\*Withoutthebackslash,thiswouldbeabulletinanunorderedlist.渲染效果如下:Withoutthebackslash,thiswouldbeabulletinanunorderedlist.可做转......
  • 7、Markdown 代码语法
    7、Markdown代码语法要将单词或短语表示为代码,请将其包裹在反引号(`)中。Markdown语法HTML预览效果Atthecommandprompt,type`nano`.Atthecommandprompt,type<code>nano</code>.Atthecommandprompt,type nano.转义反引号如果你要表示为代码的......
  • 8、 Markdown 分隔线语法
    8、Markdown分隔线语法要创建分隔线,请在单独一行上使用三个或多个星号(***)、破折号(---)或下划线(___),并且不能包含其他内容。***---_________________以上三个分隔线的渲染效果看起来都一样:分隔线(HorizontalRule)用法最佳实践为了兼容性,请在分隔线的前后均添......
  • Python基础语法
    Python标识符在Python中,标识符由字母、数字、下划线组成。标识符要求如下:可以包括英文,数字以及下划线;不能以数字开头;区分大小写;以单下划线开头(eg:_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用fromxxximport*而导入;以双下划线开头的(eg:__foo)......