前言:
想象一下,你走进一家餐馆,菜单上有你熟悉的老派Java汉堡,还有新推出的Kotlin牛排。Kotlin不仅看起来更美味,还附带了免费的甜点——更简洁的语法和更少的错误。学习Kotlin的必要性,就像是选择更健康、更美味的餐点一样,让你在编程的世界里更加游刃有余。而且,你不需要担心适应问题,因为Kotlin和Java一样,都是熟悉的味道。为什么不来一份Kotlin大餐,让你的编程生活更滋味呢?
学习Kotlin,是每一位追求技术进步的开发者不可忽视的一步。Kotlin以其简洁优雅的语法和强大的功能,正在迅速成为现代编程语言的翘楚。作为一种与Java完全兼容的语言,Kotlin不仅能够提高开发效率,还能大幅减少代码中的错误,提升代码的可读性和可维护性。这些特性使得Kotlin不仅适用于新项目的开发,更是优化和升级现有Java项目的理想选择。
在当今竞争激烈的技术领域,掌握Kotlin无疑会让你在职业发展中占据一席之地。Kotlin已经成为Android开发的首选语言,同时也在后端开发、数据分析和多平台开发中展现出强大的生命力。通过学习Kotlin,你不仅能紧跟技术发展的潮流,还能为自己打开更多职业发展的机会之门。
现在,正是你抓住机遇、迎接挑战的时刻。每一次新的学习,都是一次自我提升的机会。让我们一起投入到Kotlin的世界中,探索更多的可能性,拓宽我们的技术视野。相信在不久的将来,你会因为今天的选择而感到自豪。加油,未来因你而更加精彩!
话不多说,直接进入学习。
数组的创建及使用数组的建立:
val a = intArrayof(1,2,3,4).或 val a = IntArray(5){it+1}.(第二种相当于是new了一个对象创建数组)
建立的数组是不可以修改的。
想要访问数组的内容可以通过遍历的方式、直接索引、或者把整体访问。
- 遍历
val a = intArratyof(1,2,3,4,5)
a.forEach{element->
println(element)
}
或
for(element in a){
println(element)
}
- 直接索引
val a = intArratyof(1,2,3,4,5)
a[0] 取出来的结果是1
3.整体访问
val a = intArratyof(1,2,3,4,5)
println(a.contentToString)
Kotlin数据类型和字符比较
在申明变量的时候,可以用val和var
val是申明一个不能被改变的变量,像java中给加上final
var是申明一个变量。
例如: var a=2
也可以补变量类型。var:int = 2 var:String = “hello world ”
申明Long类型的变量的时候,必须用大写的L,避免歧义。
var a =123456L
对于无符号类型,只用在类型的前面加上U,val a:Uint = 10u
字符串比较:
字符串的比较可以用 = = 和= = =。
a = = b相当于java中的equals,比较是 a和b两个的内容。
a= = = b 比较是否为同一个对象。
raw String:用于书写很长的字符。
val n里面写的就是 raw String。
trimIndent()方法可以把前面共同的空格去掉。
Kotlin函数和方法的定义
定义一个函数:
fun main(a:Array<String>):Unit{
println(a.contentToString())
}
fun 表示这是一个函数 main是指函数名,a是参数的形参
Arrat<String>是参数的类型,最后Unit是函数的返回值。Unit是指返回值为空。
定义一个方法:
方法可以看成一个特殊的函数,有receiver(也就是在类里面)的函数称为方法
class Text(){
fun main(a:int):Int{
return a
}
}
函数的引用:
fun a(){}
::a
也可以去接收这些函数的引用
val c:() ->Unit = ::a
方法的引用:
class Text{
fun a(e:String):Unit{}
}
Text:a
如果要接收这个方法
val c:(Text,String) -> Unit=Text:a
或
val c:Text.(String) -> Unit=Text:a
或
val c:Function2(Text,String,Unit) =Text:a
在函数内调用类中的方法:
class Text{
fun a(e:String):Unit{}
}
fun t1(u:(Text,String)->Unit){
u(Text(),”1”)
或
u.invoke(Text(),”1”)
}
定义一个变长参数
fun a(vararg args:String){
println(args.contentToString())
}
定义多返回值:
fun a():Triple<Int,Long,Double>{
ReturnTriple(1,3L,4.0)
}
Triple是三个返回值
Pair是两个返回值
具名参数:
fun a(x:Int=1,y:String=””)Pair<Int,String>{
return Pair(x,y)
}
再调用的时候可以只传入一个,就会有默认值
a(y=”1”)
此时的x就会是默认值的1
kotlin中的区间
区间的创建:
val a = 1..10 从1取到10
val a = ’a’..’z’从a取到z
val a = 1L..10L 从1L取到10L
取值1-10的整型,属于离散型。1L-10L 属于连续型。
val a = 1 until 10// [1,10) 从1取到9
如果想要倒序的区间
val a = 10 downTo 1//[10…,1]
想要有间隔的区间
val a = 1..10 step 2 取值是1、3、5、7、9
想要把整型区间打印出来,可以用joinToString()方法
val a = 1..10
println(a.joinToString())
想要打出离散型,只能打出一段描述
val a=1f..2f
println(a.toString())// 结果是1.0 .. 2.0
遍历区间:
1.val a = intArrayOf(1,3,5,7)
for(i in o until a.size){
println(a[i])
}
或
for(i in a.indices){
println(i)
}
Kotlin集合
分为可变List(MutableList)、不可变List。可变Map(MutableMap)、不可变Map
可变Set、不可变Set(MutableSet)
创建一个集合
val a:List<Int> = listof(1,2,3)
Val b:MutableList<Int> = mutableListOf(1,2,3)
遍历集合:
a.forEach{element->
println(element)
}
for(element in a){
println(element)
}
Map键值对的创建
val a:Map<String,Any> = mapof(“age” to “18”)
val a:Map<String,Any> = mutableMapOf(“age” to “18”)
遍历map:
for(element in a.entries){
println(“${element.key}, ${element.value}”)
}
- forEach{
Println(it)
}
修改集合 可以用:
val a:MutableList<String> = mutableListOf(“s”)
- add(“t”) 也同等于 a += “t”
- remove(“s”)
Pair类
两种创建方式:
val a= ”age” to “18”
val a=Pair(“age”,”18”)
获取对应的元素:
val first = pair.first
val second= pair.second
val (x,y) = a
Triple类
两种创建方式:
val a=Triple(“age”,”18”,”20”)
获取对应的元素:
val first = triple.first
val second= triple.second
val third= triple.third
val (x,y,z) = a
类和接口
在kotlin中,类默认是Public,定义成员的时候,必须给赋值。
类的构造方法有三种写法:常用的是最后一种,主构造器,是定义在类定义那一行,在类实例化的时候,一定会被执行的主构造器。
class Text{
val a:Int = 0
constructor(x:Int){
this.x = x