哪些网站用户体验好/店铺推广软文案例
4.2.2 常量和只读变量
常量和只读变量一旦初始化就不能再被修改。在kotlin中,声明常量是在标识符的前面加上val或const val 关键字。
1. val 声明的是运行时变量,在运行时进行初始化
2.const val 声明的是编译时常量,在编译时初始化
val 相当于 final
const val 相当于 public static final
5.4.1 可空类型概念
例子:
var n:Int = 10 n=null 编译错误
var n:Int?=10 n=null 可以
Kotlin 安全运算符
1.安全调用运算符?.
2.安全转换运算符 as?.
3.Elvis 运算符?:
也叫 空值合并运算符 例子:
var a=divide(100,0)
int x=a?:0
结果x=0
意思就是 假如a是空值,则让x=0 相当于给他一个默认值,空的就赋值0,避免了null 报错
4.非空断言 !!
6.2.5字符串比较
val s1="Hello"
val s2="HELLO"
s1.equals(s2,ignoreCase = true)//忽略大小写比较内容是否相等 结果为true
除了equals 之外,还有compareTo ,这个比较的是顺序,返回的是数字,
如果俩个字符串相等结果为0,前面的小就返回负数,大就返回正数
7.5其他运算符
冒号: 用于变量或者常量类型声明,以及声明继承父类和实现接口
小括号():起到改变表达式运算顺序的作用,他的优先级更高
中括号【】:索引访问运算符号
等号:赋值
可空符?标识一个可空类型
安全调用运算符?. 调用非空类型的函数或者属性
Elvis ?: 空值合并运算符
非空断言 !! 就是一定不会是空值
双冒号:: 引用类,属性或函数
区间.. :表示一个范围区间
箭头-> 用来声明lambda 表达式
展开运算符*将数组传递给可变参数时使用
8.1分支结构
if else
when(){
x->{
}
}
do{
}while()
8.2.3 for语句
for( a int 0..9){
}
for(a int 0..list.size){}
for(item in list){}
//获取数组索引
for(i in list.indices){}
8.4 使用区间
for(x in 0..5) //定义区间包含0和5
for(x int 0 until 5) //定义半开区间包含0,不包含5
8.4.2 使用in 和!in 关键字
例子
var testScore=80 //设置一个测试分数var grade=when(testScore){in 90..100->"优秀"in 80 until 90->"良"in 60 until 80->"中"in 0 until 60->"差"else->"无"}if(testScore !in 60..100){println("不及格")}val strList= arrayOf("刘备","关羽","关羽")var name="赵云"if(name !in strList){println(name+"没结义")}
函数
fun 函数名(参数列表) : 返回值类型{
函数体
return 返回值
}
9.3.1使用命名参数调用函数
xxx(100,100)//没有采用
xxx(width=100,height=100)//采用命名函数
xxx(100,height=100)//采用
这个操作,之前的java使用参数提示的,命名函数可能有其他操作吧
9.3.2参数默认值
9.3.3可变参数
这里可以和扩展运算符*结合
9.5 局部函数
9.6匿名函数
fun nimingTEST(a:Int,b:Int):String{val xxx=if(a==b)fun (x1 : Int, x2:Int):String{return (x1+x2).toString() }elsefun (x1 : Int, x2:Int):String{return (x1-x2).toString() }return xxx(a,b)}
感觉这个不如一条一条列出来清晰
10.4.1 Bean
10.4.3延迟初始化属性
lateinit 字面意思延迟初始化,用的时候才会实例化,实例化是占内存,这个可以避免内存消耗吧
lateinit 关键字放在var之前,不能是可空类型
10.4.6可观察属性
这里做了一个点击查看的操作,是可以监听到的,
10.5.1扩展函数
//基本数据类型扩展fun Double.interestBy(interestRate: Double): Double {return this * interestRate}//自定义账户类class Account {var amount: Double = 0.0 //账户金额var owner: String = "" //账户名}//账户类函数扩展fun Account.interestBy(interestRate: Double): Double {return this.amount * interestRate}
Double 类型可以引用
看起来很方便
这个看起来只能在当前类中使用
肯定可以写全局的
写一个文件,注意是文件不是类
这样直接在其他地方可以用了,需要注意是在同一个包里
10.6构造函数
默认是自带无参数构造
10.8.1声明数据类
创建一个类,区分了是数据类还是工具类还是其他类
数据类关键词data
添加一个data关键字后变成了数据类,底层数据类
底层的三个方法
hash() toString equals 另外增加了一个copy的方法
data 修饰的类 参数有要求,必须要有var/val修饰
打印出来是2,也就是 修改了其中一个值其他都是之前的
10.10嵌套类
无法访问外部类成员变量
加一个内部类关键字就可以了
10.11.1对象表达式
Object关键字
接口回调
10.11.3 伴生对象
Kotlin 没有 java中的Static 所以
伴生类不能访问外部类的成员属性啥的,这个交互起来,还是以外部类为主
11.继承与多态
关键字open,Kotlin 默认是 final修饰的类和属性只有加上open才能被继承
都一样,哪个代码少用哪个
11.4.1 is as
is 相当于 instanceof as 相当于强类型转换
13.2.4 函数作为参数调用
费劲巴拉的你直接宽*高不就得了。
13.3Lambda 表达式
使用案例2
简便了为啥我感觉花里胡哨的没有java通俗易懂
简化之后Int直接省略了
省略写法
没啥意思啊~
13.3.4 return
return@foreach可以跳出本次循环,return 和 break 会跳出整个循环
这种写法就可以用continue
13.4.闭包与捕获变量
这个有点绕
13.5内联函数
关键字inline
13.5.2Let函数
let的特点 1 最后一行是赋值
let特点2非空检查
在koltin中防止引用null对象,所有的对象都可以调用let方法,为空时不执行,不为空时执行
a是自己取的名字,可以使用默认的it
let特点3 直接读取调用链结果
例子
这里拿到的是他们的长度,但是我想要字符串本身
直接拿到数据
map是转换的意思
run
with
和run类似,但是他没有返回值
apply
also
泛型
假设要做一个比较的方法
这里只能比较int 参数
在方法名之前加上<T>就行了,一般都是TEKU
如果是多类型的<T,U>,中间用逗号隔开
14.1.3泛型约束
假如只想比较数字方向的类型,可以大概给个Number,他的子类有Int Double
也可以写成
Comparable<T>包括了很多可以比较的类型,前后的参数一定要一个类型的
14.1.4可空类型参数
假如参数是空的,我们需要防止
可空
不可空
3大基础函数
filter
过滤
map
转换
reduce
聚合
聚合函数
阶乘
// n个元素val intArray = IntArray(2) {it + 1}val reduce = intArray.reduce { acc, i ->acc * i}println(reduce)
从1开始到n的阶乘
结果是从0到999
19协程
在执行阻塞任务时.会将这种任务放到子线程中,执行完成再回调(callback)主线程,更新UI等操作,这就是异步编程。协程底层库也是异步处理阻塞任务,但是这些复杂的操作被底层库封装起来。协程代码的程序流是顺序的,不再需要一堆的回调函数,就像同步代码一样,也便于理解,调试和开发
线程是抢占式的,线程调度是操作系统级的,而协程是协作式的,协程调度是用户级的,协程是用户空间线程,与操作系统无关,所以需要用户自己去做调度
19.2创建协程
launch 函数的返回值是一个Job对象,Job是协程要执行的任务,可以将Job对象看做协程本身,所有对协程的操作都是通过Job对象完成的,协程的状态和生命周期都是通过Job反应出来的
Job对象的常用属性和函数
isActive 判断Job是否处于活动状态
isCompleted判断Job是否处于完成状态
isCanceled判断Job是否处于取消状态
start 开始Job
cancel取消Job
join 当前协程处于等待状态,知道Job完成,join是一个挂起函数,只能在协程体中或其他的挂起函数中调用
launch 和 runBlock 是相反的,runBlock 会阻塞线程
从这里可以看出通过.launch开启一个协程会被先挂起,同级别的代码会先运行,
suspend是一个协程的关键字,被他修饰的函数就会挂起,例如这个delay(),他只能在协程方法体内运行,当遇到了suspend函数的时候,当前的协程就会主动逃离当前的线程去别的地方执行任务,当函数比如delay 500 执行完了,他就会回来线程继续执行
suspend就是让协程该走就走,执行完在回来,给主线程或者说同级别的代码块更好的运行
这里的运行顺序换成runBlock
和上面相反程序会等runblock 执行完再执行下面
由于这种操作有可能阻塞主线程,所以很少有
简单实用的场景
butStart.setOnClickListener(View.OnClickListener {
val coroutineScope = CoroutineScope(Dispatchers.Main)
coroutineScope.launch {
withContext(Dispatchers.IO) {
Thread.sleep(5000)
a = 20
}
text.text = ""+a
}
})
可以通过withContext 把它切换到子线程,
以后用它替换java的AsycnTask吧,至于其他方法太烦了
相关文章:

复习 Kotlin 从小白到大牛 第二版 笔记要点
4.2.2 常量和只读变量 常量和只读变量一旦初始化就不能再被修改。在kotlin中,声明常量是在标识符的前面加上val或const val 关键字。 1. val 声明的是运行时变量,在运行时进行初始化 2.const val 声明的是编译时常量,在编译时初始化 val …...

X264简介-Android使用(二)
X264简介-Android使用(二) 4、Ubuntu上安装ffmpeg: 检查更新本地软件包(如果未更新,reboot Vmware): sudo apt update sudo apt upgrade官网下载的source文件安装: http://ffmpe…...

【独家】华为OD机试 - 统计差异值大于相似值二元组个数(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

掌握好Framework 才是王道~
现在面试对Android开发者的要求越来越高了!从最开始的阿里、头条、腾讯等大厂,到现在的互联网车企,面试总喜欢问道 Framework底层原理的相关问题 Android Framework的三大核心功能: 1、View.java:View工作原理,实现包…...

Codeforces Round 856 (Div. 2) A — C
Codeforces Round 856 (Div. 2) 文章目录A. Prefix and Suffix Array题目大意题目分析codeB. Not Dividing题目大意题目分析codeC. Scoring Subsequences题目大意题目分析codeA. Prefix and Suffix Array 题目大意 给出一个字符串所有的非空前后缀,判断原字符串是…...

2022年MathorCup数学建模B题无人仓的搬运机器人调度问题解题全过程文档加程序
2022年第十二届MathorCup高校数学建模 B题 无人仓的搬运机器人调度问题 原题再现 本题考虑在无人仓内的仓库管理问题之一,搬运机器人 AGV 的调度问题。更多的背景介绍请参看附件-背景介绍。对于无人仓来说,仓库的地图模型可以简化为图的数据结构。 仓库…...

开源项目的演进会遇到哪些“坑”?KubeVela 从发起到晋级 CNCF 孵化的全程回顾
作者:孙健波、曾庆国 点击查看:「开源人说」第五期《KubeVela:一场向应用交付标准的冲锋》 2023 年 2 月,**KubeVela [ 1] ** 经过全体 ToC 投票成功进入 CNCF Incubation,是云原生领域首个晋级孵化的面向应用的交付…...

MSDP实验配置
目录 配置MSDP 配置PIM SM协议 配置各PIM SM域内的静态RP 配置MSDP对等体 配置域内的MSDP对等体 AR8和AR9建立EBGP邻居 配置域间的MSDP对等体 进行实验验证 什么是MSDP MSDP(Multicast Source Discovery Protocol)组播源发现协议的简称 用来传递…...

惊!初中生也来卷了……
大家好,我是良许。 前两天在抖音直播的时候,突然来了一位不速之客…… 他自称是初中生,一开始我还有点不太相信,直到跟他连麦,听到他还略带一些稚嫩的声音,我才知道,他没有骗我…… 他说他想学…...

kafka相关配置介绍
kafka默认配置 每个kafka broker中配置文件server.properties默认必须配置的属性如下: broker.id0 num.network.threads2 num.io.threads8 socket.send.buffer.bytes1048576 socket.receive.buffer.bytes1048576 socket.request.max.bytes104857600 log.dirs/tmp/…...

【PyTorch】教程:torch.nn.Hardtanh
torch.nn.Hardtanh 原型 CLASS torch.nn.Hardtanh(min_val- 1.0, max_val1.0, inplaceFalse, min_valueNone, max_valueNone) 参数 min_val ([float]) – 线性区域的最小值,默认为 -1max_val ([float]) – 线性区域的最大值,默认为 1inplace ([bool]) …...

神垕古镇景区5A级十年都没有实现的三大主因
钧 瓷 内 参 第40期(总第371期) 2023年3月5日 神垕古镇景区5A级十年都没有实现的三大主因 这是2013年,禹州市市政府第一次提出创建5A级景区到今年三月份整整十年啊! 目前神垕古镇景区是4A级景区,5A级一直进行中&a…...

react函数组件常用的几个钩子函数useState、useEffect、useRef、useCallback
react框架react框架包括包括两大类:类组件函数组件。类组件构成:constructor自定义方法。调用方法通过this.方法名()。constructor(superstate)构造器里面必有super字段。render()方法里面写页面布局。函数组件构成:各种钩子函数return()方法…...

4N60-ASEMI高压MOS管4N60
编辑-Z 4N60在TO-220封装里的静态漏极源导通电阻(RDS(ON))为2.5Ω,是一款N沟道高压MOS管。4N60的最大脉冲正向电流ISM为16A,零栅极电压漏极电流(IDSS)为1uA,其工作时耐温度范围为-55~150摄氏度。4N60功耗(…...

现代神经网络(VGG),并用VGG16进行实战CIFAR10分类
专栏:神经网络复现目录 本章介绍的是现代神经网络的结构和复现,包括深度卷积神经网络(AlexNet),VGG,NiN,GoogleNet,残差网络(ResNet),稠密连接网络…...

Java代码弱点与修复之——Dereference null return value(间接引用空返回值)
弱点描述 Dereference null return value,间接引用空返回值。是Coverity Scan静态代码分析工具中的一个警告,表示代码中有对可能为空(null)的方法或函数返回值进行间接引用(Dereference)操作。 该类型的漏洞可能会导致 NullPointerException 异常,并且会导致程序崩溃或…...

【冲刺蓝桥杯的最后30天】day3
大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨💻,断更了整整一年,又开始恢复CSDN更新,从今天开始更新备战蓝桥30天系列,一共30天,如果对你有帮助或者正在备…...

光伏发电嵌入式ARM工控机
随着智慧电力技术的不断发展和普及,越来越多的电力设备和系统需要采用先进的控制和监测技术来实现自动化管理和优化运行。其中,嵌入式 ARM 控制器技术在智慧电力领域中得到了广泛应用。同时,导轨安装也是该技术的重要应用场景之一。 导轨安装…...

推荐 7 个 Vue.js 插件,也许你的项目用的上(五)
当我们可以通过使用库轻松实现相同的结果时,为什么还要编写自定义功能?开发人员最好的朋友和救星就是这些第三方库。我相信一个好的项目会利用一些可用的最佳库。Vue.js 是创建用户界面的最佳 JavaScript 框架之一。这篇文章是关于 Vue.js 的优秀库系列的…...

1.1基于知识图谱的项目实战:优酷搜索泛查询意图优化
NLU的技术实现主要分为在线识别和离线数据挖掘两块。 1.在线识别 NLU的在线识别技术栈如下图所示,共由下述2个部分组成: 第一个部分是Slot Filling(成分分析),负责对query进行实体识别和槽位抽取;第二部分Inention Detection(意图识别),根据提取的槽位进行意图的判定(目…...

[java Spring JdbcTemplate配合mysql实现数据批量删除
之前的文章 java Spring JdbcTemplate配合mysql实现数据批量添加和文章java Spring JdbcTemplate配合mysql实现数据批量修改 先后讲解了 mysql数据库的批量添加和批量删除操作 会了这两个操作之后 批量删除就不要太简单 我们看到数据库 这里 我们用的是mysql工具 这里 我们有…...

uos 20 统信 fprintd 记录
uos 20 统信 fprintd 记录 sudo busctl deepin-authenticate.service /usr/lib/systemd/system/deepin-authenticate.service [Unit] DescriptionDeepin Authentication[Service] Typedbus BusNamecom.deepin.daemon.Authenticate ExecStart/usr/lib/deepin-authenticate/d…...

vue移动端h5,文本溢出显示省略号,且展示‘更多’按钮
问题: 元素宽度100%,宽度会随着浏览器缩放而变化。元素内文本超过4行时显示省略号,同时展示‘更多’按钮,点击更多按钮展示全部文本。如下图所示 超出四行显示省略号(…)的代码 .content{overflow:hidden;text-overflow: elli…...

php宝塔搭建部署实战兰空图床程序网站PHP源码
大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Lsky Pro兰空图床程序网站PHP的源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP8.0 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码,宝塔添加…...

软件测试面试:拿到一个产品(版本)如何开展测试?
产品提测后,如何开展测试? 我们都了解软件测试的执行流程,......提测-冒烟测试-详细测试-提交缺陷报告-回归测试,但软件测试并不总是线性过程,它甚至可能是螺旋结构,不断地试错,不断地迭代&…...

【Opencv项目实战】图像的像素值反转
文章目录一、项目思路二、算法详解2.1、获取图像信息2.2、新建模板2.3、图像通道顺序三、项目实战:彩图的像素值反转(方法一)四、项目实战:彩图的像素值反转(方法二)五、项目实战:彩图转换为灰图…...

Swagger生成接口在线文档
OpenAPI规范(OpenAPI Specification 简称OAS)是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程,目前版本是V3.0,并且已经发布并开源在github上。&#…...

104.第十九章 MySQL数据库 -- MySQL主从复制、 级联复制和双主复制(十四)
6.1.2 实现主从复制配置 参考官网 https://dev.mysql.com/doc/refman/8.0/en/replication-configuration.html https://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html https://m…...

第一次使用Python for Qt中的问题
在创建带有form的python for qt的时候,使用的库是pySide6,而不是pyqt。 因此,需要安装pyside6。 Running "/usr/bin/python3 -m pip install PySide6 --user" to install PySide6. ERROR: Could not find a version that satisfi…...

.Net Core WebApi 在Linux系统Deepin上部署Nginx并使用(一)
前言: Deepin最初是基于Ubuntu的发行版 2015年脱离Ubuntu开发,开始基于Ubuntu上游Debian操作系统 2019年脱离Debian,直接基于Linux开发,真正属于自己的上游Linux系统发行版 2022年8月,新版《Deepin V23》我下载开始了我…...