kotlin临阵磨枪

本文深入探讨Kotlin语言的关键特性,包括函数定义与调用、集合创建、类与接口使用、数据类及类委托等核心概念。解析了Kotlin语法糖如表达式体、代码块体、扩展函数和属性的高效运用,以及密封类、内部类的独特优势。
摘要由CSDN通过智能技术生成

一 .基础部分

1.函数的声明
函数声明fun开始,参数后面跟返回;中间用冒号隔开,最后才是函数体。
2.表达式与语句
语句使用非常少,只有do、while和do/while;剩下都是表达式,叠罗汉另一个表达式。
3.代码块体和表达式体
代码块体就像老java,函数体写在花括号中;表达式体轻而便,直接返回表达式。
4.在字符串中使用变量
变量名前加 来 直 接 引 用 局 部 变 量 , 也 可 以 用 来直接引用局部变量,也可以用 {if(a>b) “a” else “b”}的方式来引用更加复杂的表达式
5.get()关键字写自定义访问器
开头要加val,紧跟属性和类型;get随后加,函数体放最后
6.枚举的用法举例
转自简书泽毛
7.类的类型检查和转换
判断变量是否是某种类型用is,并且检查未某种类型后就不需要再装换它。
8.当代码块成为if和when的分支时
代码块藏if、when中,代码块最后一行是结果
9.迭代中的区间
in把迭代开起来,..再把区间表示;
downTo递减到某值,step告诉你步多长;
until让你不包含这指。
10.异常处理的典型结构
异常是不一定非要显示处理的
![转自简书泽毛

二.函数的定义与调用

1.创建集合
使用arryListOf(1,2,3)hashMapOf(1 to "one", 2 to "tow") hashSetOf(1,2,3)等方法可以不用转换集合类来匹配java类,并且可以使用集合相关的扩展方法
2.命名函数
函数可读增加了,按顺序制定需要参数
例子 joinToString(list, prefix = "AA",postfix = "BB",sep = "CC")
3.顶层函数和属性
顶层函数相当于没有类名直接声明的函数,相当于java中的静态函数,可以直接使用{文件名}.{方法名}的方式引用
4.Java中调用顶层属性的方式

package com.demo.kela.wenjian1
//不可变。
val kotlinVal = "kotlinValue"
//可变。
var kotlinVar = "kotlinVariable"
//常量。
const val kotlinConst = "kotlinConst"
//顶层函数。
fun kotlinFunc() {}

//下面是java中调用该文件夹的方式
package com.demo.kela.wenjian2;
import com.demo.kela.wenjian1.KotlinMethodKt;
public class JavaCallKotlin {
    public JavaCallKotlin() {
        KotlinMethodKt.kotlinFunc();
        //不可变。
        KotlinMethodKt.getKotlinVal();
        //可变。
        KotlinMethodKt.setKotlinVar("newKotlinVar");
        KotlinMethodKt.getKotlinVar();
        //常量。
        String kotlinConst = KotlinMethodKt.kotlinConst;
    }
}

5.扩展函数和属性
是一个类的成员函数,但是它定义在类的外面,在声明扩展函数的时候,把需要扩展的类或接口放到它的前面,用来调用这个扩展函数的对象,叫做接收者对象。
扩展函数可以直接访问被扩展的类的其它方法和属性,但不允许打破封装性,不能访问私有或受保护的成员。
扩展函数不可以重写,因为被当做了静态函数对待。
6.var扩展函数提供get/set,val扩展函数只提供get
7.可变参数vararg
用来声明一个函数有任意数量的参数。如果参数已经成为一个数组使用 *int[]来对其进行解包
8.中缀函数
被infix修饰符修饰的方法可以将 a.add(b) 变为 a add b 就像运算加法一样(问我有啥用,我也不知道这玩意有啥用)
9.toRegex将字符串转换为正则表达式
10.局部函数
在函数中再提取出一个函数,供该函数进行调用

三. 类、对象和接口

1.接口的大致属性
冒号代替了extends和implements关键字,override修饰符用来标注被重写的父类或者接口的方法和属性,强制要求加
2.访问性修饰符
一般类
Kotlin中类和方法默认都是final的,如果想创建子类,需要open修饰,此外还要给每个允许被重写的属性和方法添加open
抽象类
抽象类中的抽象函数访问性始终open,非抽象函数默认是final的,如需重写则需要加open
3.可见性区别
java默认包私有,而Kotlin默认public,如需包私有,使用internal修饰类,则为“只在模块内部可见”
kolin允许在顶层声明中对类、函数、属性使用private,这样就只在声明的文件夹中可见
kotlin中外部类不能看到内部类中的private成员
4.内部类和嵌套类
kotlin中写在类内部的类不是内部类,不会持有外部类的引用,相当于一个静态内部类
如果要使内部类持有外部引用,需要使用inner修饰符,而且访问外部类时,需要使用this@{外部类名}的方式
5.密封类
在class前使用sealed 修饰符。某种意义上相当于枚举类的扩展,因为枚举类型的值集合也是首先的。但密封类可以包含多个状态的实例,不像枚举只能拥有一个。
6.构造方法的学问
主构造方法:主要且简洁的初始化类的方法,且在类外部声明
从构造方法:在类内部声明
constructor:用来开始一个主构造方法和从构造方法的声明。
init:一个初始化块语句,该语句块包含了在类被创建时执行的代码,且与主构造方法一起使用,因为主构造方法有语法限制,这就是为什么要使用初始化语句块的原因。
在kotlin中,通过在基类列表的父类引用中提供父类构造方法参数的方式来获得父类的构造

四.数据类、类委托 及 object 关键字

1.data关键字会使equals hashCode toString方法自动生成好
2.类委托
使用by关键字将接口的实现委托到另一个对象;需要修改时可以重写他们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值