Kotlin

2024-03-21  本文已影响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);

字符串比较

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

1 4 7 10

list和map集合

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

} 
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)
上一篇下一篇

猜你喜欢

热点阅读