kotlin进阶知识点(上篇)

前言:

想象一下,你走进一家餐馆,菜单上有你熟悉的老派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了一个对象创建数组)

建立的数组是不可以修改的。

想要访问数组的内容可以通过遍历的方式、直接索引、或者把整体访问。

  1. 遍历

val a = intArratyof(1,2,3,4,5)

        a.forEach{element->

        println(element)

}

for(element in a){

        println(element)

}

  1. 直接索引

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}”)

}

  1. forEach{

   Println(it)

}

修改集合  可以用:

val a:MutableList<String> = mutableListOf(“s”)

  1. add(“t”)  也同等于 a +=  “t”
  1. 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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值