Kotlin

作者: 扶光_ | 来源:发表于2024-03-21 15:04 被阅读0次

    Google官方推荐使用Kotlin进行Android开发,能够更及时地获得与Android开发相关的新特性和支持。

    hello kotlin

    fun main(args:Array<String>){
        print("hello koltin")
    }
    
    image.png

    二,变量

    var a = 7;

    常见的数据类型


    数据类型

    他可以根据你写的数据字段判断属于那个数据类型

    显示类型转换
    var a:Byte = 10;

    val num = 22;//用val声明的变量不允许再重新赋值的

    2.1 变量的取值范围

      val aByte:Byte = Byte.MAX_VALUE
        val bByte:Byte = Byte.MIN_VALUE
    
        println("最大值byte值为"+aByte)
        println("最小值byte值为"+bByte)
    
    image.png
    int类型可以使用二进制的方式进行赋值,写法为0b开头
    比如 0b0011 值就是十进制的3

    三,函数

    image.png

    模板字符串

    fun place(placeName:String):String{
        var template="""今天很好,我们去了${placeName},这个${placeName}真好啊"""
    
        return template
    }
    fun main(args:Array<String>){
        println(place("杭州"))
    }
    
    image.png

    if/else 条件判断

    fun computed(score:Int){
        if (score >= 60) {
            print("及格了")
        }else{
            print("你不及格")
        }
    }
    fun main(args:Array<String>){
        computed(60);
    }
    
    判断

    2的100次方 Math.pow(2,100);

    字符串比较

    • 1 ==
      ==‘表示比较值,等于equal

    • 2 equal(比较的变量,true/false)
      第二个参数是是否忽略字母大小写,true=是

    when

    fun score(num:Int){
        when(num){
            100 -> println("太牛了")
              90-> println("优秀")
            80-> println("可以")
            70-> println("加油")
            60-> println("要努力了")
            else-> println("还需要努力")
        }
    }
    
    score(60)
    

    Loop 循环 和区间

    求1-100 的和

    fun main(args:Array<String>){
        var nums = 1..100 //代表声明了一个数组  1-100
        var sum = 0
        for (num in nums) {
            sum += num
        }
        println(sum)
    }
    
    • 区间
      var nums = 1 until 100 不包含100 [1,100)

    • 步长 step

    var nums =1..10//代表声明了一个数组  1-100
        var sum = 0
        for (num in nums step 3) {
            println(num)
        }
    

    1 4 7 10

    • 翻转 .reversed()
    • 总数 .count()

    list和map集合

    • list集合
    fun main(args:Array<String>){
       var lists = listOf("西瓜","草莓","橙子")
        for (list in lists) {
            println(list)
        }
    
    }
    
    image.png
    带索引的列表
    fun main(args:Array<String>){
       var lists = listOf("西瓜","草莓","橙子")
        for ((i,list) in lists.withIndex()) {
            println("$i,$list")
        }
    
    } 
    
    • map集合
      是一种键值对的格式
    fun main(args:Array<String>){
       var map=TreeMap<String,String>()
       map["user"]="admin"
       map["password"]="123456"
       println(map["user"])
       println(map)
    
    }
    
    111

    函数和函数表达式

    fun add(x:Int,y:Int):Int{
      return x+y;
    }
    

    如果有返回值,直接能return和大括号删掉

    fun add(x:Int,y:Int):Int =  x+y;
    
    

    定义变量的函数

    //定义了函数
    var fn = {x:Int,y:Int->x+y}
    //所以这个fn就是函数了
    var result = fn(4,5);
    prinyln(result);//9
    

    字符串和数字转换

    数字转换为字符串使用toString()方法

    字符串转换为数字用toInt()方法

    kotlin人机交互

    image.png

    使用try catch嵌套

    四,面向对象

    静态:属性
    动态:方法

    • 第一个特点
      用基本数据类型描述复杂的事物
    class Rect(var long:Int,var width:Int)
    
    fun main(args:Array<String>) {
        var Rect1 = Rect(long = 10, width = 20);
        println("宽度为${Rect1.width}")
    }
    
    • 第二个特点
      赋予行为
    class Girl(var name:String,var age:Int){
        fun dance(){
            println("正在跳舞")
        }
    }
    
    fun main(args:Array<String>) {
        var girl = Girl(name = "小青", age = 20);
        println("女孩名字叫${girl.name},年龄为${girl.age},")
        girl.dance();
    }
    

    五,继承和多态

    继承

    跟java继承不一样,需要在父类前加关键词open,

    image.png
    那么儿子性格是可以改变的,所以可以重写父类的方法.但在kotlin语言中,重写需要在父类的方法前添加open关键字

    多态

    共有的特性.同种功能不同的表现形态
    比如开车,特性都是开车,那么有的人单手开车,有的人双手开车

    接口

    把自己提供给外界的一种抽象化物,内部操作分理处外部的沟通方法



    实现要重写接口里面的方法或者把当前类变成抽象类

    接口是事物的能力
    抽象类是事物的本质


    image.png

    委托和代理

    委托是把事情交给别人办理
    代理是以他人名义在授权范围内进行

    委托 比如说,同样一件事情别人给我100块,给那个人10块钱,那么我就可以花10块钱委托给那个人来帮我做


    image.png

    委托我也可以做自己的事情


    image.png
    但是这样构建出来了两个oerson1.所以要有且只有一个就需要将person1的class改成Object

    枚举

    枚举

    印章类

    sealed class 类名
    阻止该类被继承

    六,高阶函数

    函数式编程

    遍历数据并打印 简写

    package week
    
    fun main() {
        var names = listOf<String>("张三","李四","王老五")
        names.forEach{
            println(it)
        }
    }
    
    result

    kotlin图像处理

    //在内存中生成一个宽高为100的图片
    BufferedImage(100,100,BufferedImage.TYPE_INT_BGR)
    
    ### kotlin高阶函数数据库遍历
    比如我需要找出年龄最大/最小的人 直接使用
    

    //返回找出来的集合
    database.maxBy(it.age)

    查找特定条件的,如年龄大于18,且身高165的
    

    database.filter({
    (it.age>18)and(it.height>165)
    })

    map 把某个属性映射出新的集合

    database.map{
      "${it.name}:${it.age}"
    }
    #### any 集合中有没有某一个数据 
    返回布尔值
    database.any{
      it.age==18 
    }
    #### count 统计符合条件的个数
    #### find 查找第一个符合条件的
    
    #### groupBy 根据不同类型分组 
    
    #### DSL 领域特定语言 
    扩展函数  
    ![image.png](https://img.haomeiwen.com/i24559446/22ebb51a6a4027ce.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    ![image.png](https://img.haomeiwen.com/i24559446/36c8e5bf0f793ac9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    相关文章

      网友评论

          本文标题:Kotlin

          本文链接:https://www.haomeiwen.com/subject/yjprndtx.html