kotlin语法学习

SpringBoot3 + Vben5.0实战:从零搭建企业级管理后台(附完整代码) 本文详细介绍了如何从零开始,使用SpringBoot3与Vben5.0技术栈搭建现代化企业级管理后台。通过对比分析,阐述了该组合在开发效率、性能(如虚拟线程)和权限模型(RBAC)方面的优势,并提供了从项目初始化、核心功能开发到部署运维的完整实战指南,帮助开发者快速构建高性能、易维护的后台系统。 阅读详情

一、字符串模板

字符串字面值可以包含模板表达式,即一小段代码,会求值并把结果合并到字符串中。模板表达式以美元($)开头,有一个简单的名字构成:

val number = 100
println("The Result is $number")

或者用花括号${}括起来的任意表达式:

val text = "This is Text"
println("The length is ${text.length}")

字符串与转义字符串内部都支持模板,如果你需要在原始字符串中表示字面值$字符(它不支持反斜杠转义),你可以用下列语法:

val price = "${'$'}9.99"

二、字符串的值

kotlin有两种类型的字符串字面值:转移字符串可以有转义字符,以及原始字符串可以包含换行以及任意文本。一下是转义字符串的一个实例:

val s = "Hello, world\n"   //\n换行
val s2 = "{\"key\":\"value\"}"    //\反斜杠对""进行转义,保留字符串格式

字符串使用单个引号(“”")分界符括起来,内部没有转义并且可以包含换行以及任何其他字符:

val text = """
This ( is) "Text"
"""

三、数组

声明对象数组的三种形式:

3.1、使用arrayOf函数和指定的数组元素创建数组

//Java写法:
String[] params1 = {"str1", "str2", "str3"};
 
//kotlin写法:
val params1 = arrayOf("str1", "str2", "str3")

3.2、使用arrayOfNulls函数创建一个指定大小的并初始化每个元素为null的数组

//Java写法:
String[] params2 = new String[12];
 
//kotlin写法:
val params2 = arrayOfNulls<String>(12)

3.3、Array构造方法指定数组大小和一个生成元素的lambda表达式

这种方法创建的数组,其中的每个元素都是非空的,就像下面这样:

//kotlin写法:
val params3 = Array<String>(3){i -> "str" + i }
 
// 也可以这么写
 val params=Array(3){"str$it"}

因为数组的原始大小已经确定,在lambda表达式中接收数组的下标,并返回一个该下标位置的值。

3.4、for循环

3.4.1、元素遍历

for(item  in  array){
	println(item)
}

3.4.2、下标遍历

for(i  in  array.indices){
	println(i.toString() + "->" +array[i])
}

3.4.3、元素遍历(带索引)

for((index,item)  in  array.withIndex()){//同时遍历下标和元素
	println("$index->$item")
}

3.5、forEach遍历数组

array.forEach{
	println(it)
}

3.6、forEach增强版遍历数组(索引加元素)

array.forEachIndexed{index, item ->
	println("$index -> $item")
}

四、集合

Kotlin的集合设计与Java不同的是,它把访问集合数据的接口和修改集合数据的接口分开了。这种区别存在于最基础的使用集合的接口之中,Kotlin.collections.Collection。使用这个接口,可以遍历集合中的元素、获取集合的大小、判断集合中是否包含某个元素,以及执行其他从该集合中读取数据的操作。但是这个接口没有任何添加或移除元素的方法。

使用Kotlin.collections.MutableCollections接口可以修改集合中的数据。它继承了普通的Kotlin.collections.Collection接口,还提供了方法来添加和移除元素、清空集合等。

在这里插入图片描述

//可变集合
val  arrayString  = mutableListOf<String>()
arrayString.add("1")

val  arrayString  = mutableListOf<String>("2","3")
arrayString.add("1")

//不可变集合
val  arrayInt =  listOf<Int>("1","2","3")
//可变集合
val  arrayMap  =  arrayMapOf(Pair("key","value"))
val  arrayMap  =  mutableMapOf<String,String>()
arrayMap.put("1","2")
arrayMap["1"] =  "2"

//不可变集合
val  arrayMap  =  mapOf<String,String>(Pair("key","value"))

五、集合与数组互相转化

fun main(args: Array<String>) {
 
    //声明一个数组
    val array1 = arrayListOf("str1", "str2", "str3")
 
    //将数组转化为集合
    val list1 = array1.toList()
 
    //将集合转化为数组
    val array2 = list1.toTypedArray()
}

六、方法

6.1、普通类的方法

class  Person  {
	fun  test(){
		println("成员方法")
	}
}

//需要构建出实例对象,才能访问成员方法
Person().test()

6.2、静态类的方法

//静态类里面的方法,都是静态方法,不需要构建实例对象,可以通过类名,直接访问静态方法
object  NumUtil  {
	fun double(num: Int):  Int{
		return  num*2
	}
}

NumUtil.double(1)

6.3、companion object 伴生类的方法

kotlin中没有static关键字,不过我们可以借助companion object来实现类静态方法的目的

class  Person {
	//不需要构架实例对象,可以通过类名,直接访问静态方法
		fun  test(){
			println("companion  object  实现类的方法")
		}

		fun test2(){
			println("普通成员方法")
		}
}

Person.test()
Person().test2()

七、方法参数

7.1、默认参数

方法参数可以有默认值,当省略相应的参数时使用默认值,与其java相比,这可以减少重载数量
我们可以通过类型后面的=来设置默认值

fun  read(offset:  Int = 0, start: Int){}

7.2、具名参数

如果一个默认参数在一个无默认值的参数之前,那么无默认值的参数,只能通过使用具名参数调用该方法来使用:

fun  read(offset:  Int = 0, start: Int){}

read(start = 1)//仅仅指给start传递值,使用默认值offset = 0

如果最后一个参数是方法,那么它既可以作为具名参数在括号内传入,也可以在括号外传入。

fun  read(offset:  Int = 0, start: Int, action: ()  -> String){}

read(start = 1, action = {"括号内传递action参数"})

read(start = 1) {"括号外传递action参数"}

7.3、可变数量的参数(Varargs)

方法的参数(通常是最后一个)可以用vararg修饰符标记:

fun  append  (vararg str:  Char, offset: Int):  String{
	val result = StringBuffer()
	for (char  in  str){
		result.append(char)
	}
	return result.toString()
}

允许将可变数量的参数传递给方法:

append('y','o','u','r','s',1)

当我们调用vararg方法时,我们可以一个接一个传参,例如append(‘y’,‘o’,‘u’,‘r’,‘s’),或者,如果我们已经有一个数组并洗完将其内容传给该方法,我们使用伸展(spread)操作符(在数组前面加*):

val  world  = charArrayOf('y','o','u','r','s')
val  result = append('y','o','u','r','s',*world, offset = 2)

可变参数的要求:

  • 只有一个参数可以标注为vararg
  • 如果vararg参数不是最后一个参数,可以使用具名参数语法,给后面的参数传递值。

八、Lambda表达式

class  View{
	public  void setOnClickListener(OnClickListener l){
	}
}
view.setOnClickListener(new View.OnClicListenser(){
	@Override
	public void onClick(View view){
		println("Lambda简洁之道")
	}
})
view.setOnClickListener{view -> println("Lambda简洁之道")}
1、省略了接口的结构体
2、保留参数view
3、-> 编写表达式

lambda表达式作为方法中的参数时候,定义transform方法,可以对数组中的元素进行变换。

//array: 要求传入一个数组,元素类型为Int 整数类型
//action: 要求传入的是一个方法,接受两个参数下标index,元素element,要求返回变换后的元素,会替换掉老的元素
fun transform(array:  Array<Inr>, action:  (index:  Int,   element:   Int) ->  Int){
	for(index  in  array.indices){
		val  newValue  =  action(index,array[index])
		array[index]  =  newValue
	}
}
val  numbers = arrayOf(1,2,3,4)
//具名参数调用,即使用参数名action给它赋值
transform(numbers, action = {index, element -> 
	.........
	index * element//闭包中最后一行表达式,计算后的结果,就是action函数的返回值
})

transform(numbers){index, element -> 
	.........
}

如何使用it
it并不是kotlin中的一个关键字(保留字)
it是在当一个高阶方法中Lambda表达式的参数只有一个对的时候可以使用it来使用此参数
it可表示为单个参数的隐式名称,是kotlin语言约定的

class  Person (var age:  Int){}

val persons  =  arrayOf(Person(1),Person(2),Person(3))

//这里的it就表示每一个person对象
persons.forEach{
	println(it.age)
}

//这里的it就表示每一个Int整数
val  numbers  =  arrayOf(1,2,3,4)

numbers.forEach{
	println(it)
}

九、条件控制

9.1、if表达式

带返回值if表达式
在kotlin中,if是一个表达式所以他会返回一个值,表达式的值为表达式作用域内最后一行的值。这一点和java是不同的,在java中if仅仅是语句。

//一般类似与java中的传统if的用法
fun  maxOf(a:  Int, b: Int): Int{
	if(a > b){
		return a
	}else{
		return b
	}
}

if表达式分支可以是代码块,也可以把作用域内最后一样表达式的值作为该分支的值:

fun  maxOf(a:Int, b:Int) = if(a > b){
	println(a)
	a//返回值为a 
}else{
	println(b)
	b//返回值为b
]

if表达式替代三目运算符
因为在kotlin中if表达式是带有返回值的,所以在kotlin中是不需要三目运算符(xxx?xxx:xxx),因为if表达式这些都能做到。

fun  maxOf(a: Int, b: Int) = if(a > b)  a  else  b

9.2、when表达式

fun  eval(number: Number): String = when (){
	is Int -> "this is Int"
	is Double -> "this is Double"
	else  -> "无效的类型"
}

十、泛型

10.1、泛型接口

interface  Drinks<T>{
	fun taste(): T
	fun price(t:  T)
}

10.2、泛型类

abstract  class  Color<T> (var t:T){
	abstract fun ptintColor()
}

class   Blue{
	val color = "blue"
}

class  BlueColor(t: Blue): Color<Blue>(t){
	override fun printColor(){
		println("color:${t.color}")
	}
}

10.2、泛型方法

fun  <T>  fromJson(json: String, tClass: Class<T>): T?{
	val t: T? = tClass.newInstance()
	return t
}
AD-Copilot 论文解读:把“大模型看图”升级为“对照检验”的工业异常检测助手 本文提出AD-Copilot,一个面向工业异常检测的视觉语言助手,通过视觉上下文比较解决现有方法的不足。针对工业场景中多模态大模型表现不佳的问题,作者指出核心原因在于缺乏工业数据和比较能力不足。为此,论文提出三个关键贡献:构建Chat-AD数据集,设计Comparison Encoder显式建模图像差异,以及采用多阶段训练策略。实验表明,该方法在MMAD基准上达到82.29%准确率,定位任务提升3.35倍,并展现出良好的泛化能力。消融实验验证了比较模块的有效性,表明其成功源于高质量比较数据与显式比较模块的协 阅读详情

相关推荐

无人机基本组成部件

无人机基本组成部件

qq_37410522的博客 1万+

Kotlin的遍历方法

10表示的是1到10,两边都是闭包,输出12345678910。也没有问题,可以用downTo方法来实现。上面代码在java中的表达式为。可以使用in来判断成员关系。

weixin_46362658的博客 1480

基于Vivado2025的UltraScale+时序收敛优化实战案例

深入解析在Vivado2025环境中针对UltraScale+架构的时序收敛挑战,结合实际设计案例,分享关键优化策略与操作技巧,显著提升设计性能与收敛效率。vivado2025的更新特性为时序优化带来新机遇。

weixin_33660045的博客 343

【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

一、List 创建与元素获取、 二、安全获取集合元素、 三、List 创建与元素获取代码示例、 四、MutableList 可变列表集合、 五、修改 MutableList 集合的 mutator 函数、 六、List 集合遍历、 七、List 通过解构一次性给多个元素赋值、 八、Set 集合、 九、可变 Set 集合、 十、List 与 Set 之间相互转换、 十一、数组类型、 十二、Map 集合、 十三、获取 Map 值、 十四、Map 遍历、 十五、可变 Map 集合、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

因时机器人-灵巧手配置方案(Ubuntu18.04)

因时机器人-灵巧手配置方案(Ubuntu18.04)

CH_monsy的博客 3847

基于 Qt C++ 的 2D 动画制作工具

你可以修改它的中心坐标 (X, Y)、宽度 (W)、高度 (H),或点击 "选择颜色" 按钮改变其填充色。* **图形视图 (`QGraphicsView` 和 `QGraphicsScene`)**: 用于显示和编辑当前帧的内容。

寒寒豆豆软件公司的博客 113

kotlin——数组(增删改查遍历)、haspMap(增删改查过滤)、for中断continue、去重、双数组查找

1、数组遍历(查) val array: Array<String> = Array(5) { (it * 10).toString() } // 下标 for (item in array.indices) { println("下标为==>" + item) } // 项的内容 for (item in array) { println("项为==>"

wy313622821的博客 5415

从苏宁电器到卡巴斯基(第二部)第01篇:我在卡巴的日子 I

聊聊行业薪酬 我相信不论是谁,如果是入职一家新的公司,那么他最想知道的一件事情就是待遇情况了。这里既包含每月实际能到手多少钱,又包括五险一金是否齐全以及是按照高标准还是低标准缴纳。另外,如果是入职IT公司,还会在意年终奖有多少,毕竟某些富裕的IT企业,每到年末就会以此制造新闻来博取大家的关注,以彰显自身的实力。 一言以蔽之,待遇问题也就是年收入究竟会有多少,也是我们进入职场的人喜欢相互打听的问题。比如我研究生那届最厉害的一位同学,签了A公司的算法岗位,年薪30W+(税前,下同),在当时的我看来就是天价了

Gleam的专栏 1224

Kotlin 循环与函数详解:高效编程指南

Kotlin中的循环结构让你能轻松遍历数组或范围内的元素。使用`for`循环结合`in`操作符,可以简洁地访问数组中的每个项,如字符串数组或整数数组。对于范围,可以用`..`来定义一系列连续的值并进行迭代。此外,Kotlin支持通过`break`和`continue`控制循环流程。函数则允许封装可复用的代码块,你可以定义接受参数并返回值的函数,利用简写语法使代码更加紧凑。例如,`myFunction(x: Int, y: Int) = x + y`简洁地定义了一个计算两数之和的函数。

小万哥的博客 1307

基于应用谱减法进行语音去噪的算法

在上述代码中首先通过读取语音信号和噪声信号,将两个信号都转换为频域信号,然后计算出语音信号在各频率下的功率谱和噪声信号在各频率下的功率谱,并基于此计算信噪比,接着根据信噪比计算出阈值,并将低于阈值的能量对应的频段进行清零操作,最终实现去噪处理,最后将处理后的信号转换回时域信号。该算法采用谱减法进行降噪处理,能有效地去除语音信号中的噪声,但是在实际应用中,该方法也存在一些问题,如会对语音信号的高频部分产生影响,所以需要在应用过程中进行适当的调整。

weixin_50547796的博客 192

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解

FRIGIDWINTER的博客 9404

Kotlin入门笔记(八)集合 与 遍历

前言:本教程最好在有JAVA的基础下进行学习 一、List集合 ListOf() 按Java的List写法,Kotlin 应该: val list = ArrayList<String>() list.add("Apple") list.add("Banana") list.add("Orange") list.add("Pear") list.add("Grape") 但是 Kotlin 专门内置的 listOf() 函数来简化初始化集合的写法: val list = lis

m0_46745664的博客 5945

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Kotlin语法学习总结

最近由于工作需要用到kotlin语言,所以学习了相关的语法知识,现在将学习到的东西进行一个总结。用于方便后续的使用。主要从以下几个方面来记录1、变量的定义和使用2、函数的定义和使用3、流程控制关键字的使用4、类和对象的使用5、接口的使用6、权限修饰符7、数据类8、lambda的使用9、函数式API的使用10、let函数的使用11、内嵌表达式的使用在这边说明一下kotlin基本的使用原则kotlin每个语句可以以;结尾,也可以不加。但是java必须要加。

疯过无痕的博客 1415

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

小白快速学习 Kotlin 语法基础

这里写自定义目录标题Kotlin初体验以下是自己总结 打上的代码 Kotlin初体验 关于kotlin从17年到现在听了无数遍了,真正开始学习是在去年同事和朋友疯狂安利 说是第一语言了也要开始学习 在2020年8 9月份简单看了郭老师的《第一行代码(第三版)》,因为书太厚啦 我实在静不下心全部看完 最后在博客上面查看到大佬的总结 一口气将 Kotlin简单语法和其他组件简单学会 、光看不练都是假把戏 确实对于我来说看完有点印象 但是确实也很容易忘记 在今年找工作中发现 kotlin越来越重要了 对于新开发的

m0_46608972的博客 258

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

kotlin基础语法学习

本篇文章我们简单说下kotlin的基本语法,相信熟悉java语言的同学,看完之后,会更容易学习kotlin。下一篇,我会根据安卓开发中的语法,进行kotlin讲解。这片我会通过kotlin语法和Java对比的方式,达到更容易理解的效果。 声明:本篇大部分代码示例是从kotlin官方文档上摘录下来。如果大家想看实例,可以到这,我写了一个跑马灯效果实例。已经上架应用宝。android studio想要

qq_16965811的博客 1123

kotlin基础语法学习阶段的代码总结

package kotlinstudy import java.lang.Exception import java.util.* fun main(args:Array<String>){ //println("hello kotlin") //隐式声明 var name = "张三"//自动类型推断 // println(name) //显式声明 var i:Int = 4 // println(i) val t = "No.

景兄弟的博客 234

Kotlin 语法学习网站

先记录下:1.http://www.kotlindoc.cn/GettingStarted/Basic-Syntax.html2.https://www.kotlincn.net

l_215851356的专栏 374

Kotlin 学习之旅 (D1),学习计划&基本语法

  学习计划 学什么? 今天是Kotlin 旅的第一天,这次Kotlin之旅的行程计划是21天 目的: 每天只要花30分钟-1个小时,坚持14天,也就是两个星期,掌握Kotlin开发Android项目所需知识 包括: 1、基础语法(2D) 2、高级语法(3D) 3、Kotlin Idioms(2D) 4、From Java to Kotlin(1D) 5、Kotlin An...

maxiaowen_2017的博客 411

Kotlin学习-基础语法

写在前面 因为实验室需要,需要将原来的桌面应用程序改成安卓端的程序,所以正好使用kotlin进行开发。 主要内容 基础知识 Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。 Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运...

zhc_24的博客 638

kotlin学习笔记之一:基础语法

年前看boss直聘,很多安卓开发岗位需要熟练kotlin开发,为了年后找工作和以后开发效率提升,春节假期开始了kotlin的学习,主要教材是《Kotlin 实战》kotlin in action这本书,这几天有时间顺便把阅读笔记整理下,这里是前三章内容的回忆和笔记整理。 1、kotlin代码在java中访问:文件名+Kt.fun名称,文件名可以通过注解指定名称:@file:JvmNam...

weixin_34327761的博客 156

Swift 语法学习指南 - 与 Kotlin 对比

Swift 语法学习指南 (Kotlin 开发者版) 本指南为 Kotlin 开发者提供 Swift 语法的快速入门,通过对比两种语言的异同点来加速学习。主要包含以下核心内容: 基础语法对比 变量声明:Swift 使用 let/var vs Kotlin 的 val/var 类型推断:两者都支持强类型推断 空安全:Swift Optional vs Kotlin Nullable 关键特性比较 函数定义:Swift func vs Kotlin fun 类与结构体:值类型(Struct)与引用类型(Clas

小一的专栏 1453

Kotlin语法学习笔记

Kotlin基础语法总结 一、类型声明 变量声明示例: val a : String = "i am a person" 小结:Kotlin中声明的类型名通常跟在变量名的后面,并且Kotlin中的所有类型都是大写。 类型推导示例: val string = "i am kotlin" val int = 123 val long = 123L val float = 12.34f val double = 12.3 val double2 = 10.1e6 小结:Kotlin中大写的才是类型,通过等号

ormosia2的博客 425

Android学习笔记3 - Kotlin语法学习

Kotilin是官方推荐的第一语言,所以本章大概记录一下他和别的语言的区别和特点。Kotilin可以使用InterliJIDEA,是JetBrains的期间IDE来运行。或者使用try.lotilinlang.org在线运行。我比较懒还是在AS上运行就可以了。我们还是在上一节的HelloWorld里写代码运行吧。我们在MainActivity位置,鼠标右键添加Kotilin File/Class,我们建立一个.kt的文件,我这里取名Comm.kt 我写入代码如下: 增加了main函数,你会发现函数前面出现一

thinbug的专栏 633

Kotlin学习——基础语法

一、函数定义 1、函数定义使用关键字 fun,参数格式为:参数 : 类型 fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b } 2、表达式作为函数体,返回类型自动推断: fun sum(a: Int, b: Int) = a + b public fun sum(a: Int, b: Int): Int = a...

zxf_2016的博客 250

Kotlin学习(2)语法

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。BAT大厂面试题、独家面试工具包,资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter,《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2401_83816794的博客 411

Kotlin学习(二)Kotlin基础语法

学习一门语言,我总是会先学习一下基本的语法。因为并不急着应用Kotlin去开发项目,所以,还是有很多的时间去学习。今天,简单的总结一下Kotlin的基本语法。

zhaojun的博客 2万+
蔓越莓@臻加冰
博客等级 码龄7年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值