• Kotlin学习(一)


    Kotlin学习(一)

    1.使用IDEA构建Kotlin项目

    在这里插入图片描述

    新建工程即可

    我这里选择的Build System是IntelliJ,虽然我没用过但是这是Kotlin基础学习应该不会用到其他依赖

    2.Hello World

    package com.simon
    
    fun main(args:Array<String>){
        println("hello kotlin");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.常量与变量

    package com.simon
    //变量声明与使用
    fun main(args:Array<String>){
        //变量
        var name = "张三"
        name = "李四"
        println(name)
    
    //    name = 8 //8是一个数字不能放到String里面
        println(name)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    常见的数据类型:

    Byte 2的8次方

    Short 2的16次方

    Int 2的32次方

    Long 2的64次方

    Float 小数点后6位

    Double 小数点后15-16位

    String 字符串

    Boolean 布尔型

    4.类型推断

    package com.simon
    
    fun main(args:Array<String>){
        var i = 18
        //i = 9999999999
        //The integer literal does not conform to the expected type Int
        //我们发现我们的i自动编译为Int类型
        var j = 9999999999
        //我们的j可以存储自然那么编译为Long类型
        var name:String = "simon"
        //我们的name就是存放一个字符串的空间
        //我们根据等号后面来推断数据类型
        val num = "123"
        //num是常量所以说是只读
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    根据等号后面来自动推断类型

    所以我们的var name:String = “simon” 可以写为 var name = “simon”

    5.基础类型大小

    package com.simon
    
    fun main(args:Array<String>) {
        val  aByte:Byte = Byte.MAX_VALUE;
        val  bByte:Byte = Byte.MIN_VALUE;
        println(aByte)
        println(bByte)
        val  aLong:Long = Long.MAX_VALUE;
        val  bLong:Long = Long.MIN_VALUE;
        println(aLong)
        println(bLong)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6.布尔值类型

    package com.simon
    
    fun main(args:Array<String>) {
        var num1 = 1
        var num2 = 4
        println(num1<num2)
    
        var num3 = Math.sqrt(5.0) - Math.sqrt(4.0)
        var num4 = Math.sqrt(4.0) - Math.sqrt(3.0)
        println(num3<num4)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    7.函数

    package com.simon
    //1.函数基本定义格式
    fun sum(a:Int,b:Int):Int{//函数返回值Int
        return a + b
    }
    
    fun main(args: Array<String>) {
        //2.可以用表达式作为函数体
        //表达式不是public就可以省略返回值类型
        fun sum(a: Int,b: Int) = a+b
      
    }
    // 3.public 方法表达式就要明确写出
    public fun sumPub(a:Int , b: Int):Int = a+b
    //4.无返回值可以省略
    fun printZzz(){
        println("printZzz")
    }
    public fun printXxx(){
        println("printXxx")
    }
    //5.可变长参数列表
    fun vars (vararg v:Int){
        for (vt in v) {
            println(vt)
        }
    }
    //6.lambda表达式
    val sumLambda: (Int,Int)->Int = {x,y -> x+y}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    8.字符串模板

    package com.simon
    
    fun main(args: Array<String>) {
        //$ 表示一个变量名或者变量值
        var a = 1
        var s1 = "a is $a"
        println(s1)
        a = 2
        //${}是一个变量的方法返回值
        var s2 = "${s1.replace("is","was")},but now a = $a";
        println(s2)
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    总结:

    $ 可以是变量值

    ${} 可以是变量的方法返回值

    9.NULL检查

    package com.simon
    
    fun main(args: Array<String>) {
        //类型后面加?表示可以为空
        var age:Int? = null
    //    var age1:Int = null
        //抛出空指针异常
    //    val ages = age!!.toInt()
        //不作处理返回null
        var ages1 = age?.toInt()
        //age为空返回-1
        var ages2 = age?.toInt() ?:-1
    
    //    println(ages)
        println(ages1)
        println(ages2)
    
        println(parseInt("zzz"))
        println(parseInt("123"))
    }
    //当一个引用可能是null时,对应的类型声明必须明确地标记为可为null
    fun parseInt(str:String):Int?{
        return str.toIntOrNull();
    }
    
    
    //上面这段代码就是我们的age这个变量是int类型但是我们赋值为null,因为加了问号说明可以为null
    //    var age1:Int = null 是抛出空指针,如果是数字就不会抛出
    //    var ages1 = age?.toInt() 这个就自然输出null了不处理
    //    var ages2 = age?.toInt() ?:-1 这个就处理了如果是null就赋值-1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    10类型检测以及自动类型转换

    package com.simon
    
    fun main(args: Array<String>) {
        println(getStringLength(123))
        println(getStringLength("123"))
    }
    
    fun getStringLength(obj: Any):Int?{
    //    if (obj is String){
    //        return obj.length
    //    }
    //    return null
    
        if (obj !is String){
            return null
        }
        //在这个分支中,obj会自动转换为String类型
        return obj.length
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    is and !is 类型判断

    11.区间

    package com.simon
    
    fun main(args: Array<String>) {
        for (i in 1..4) print(i)
        //什么都不输出,所以得知默认是升序的
        for (i in 4..1) print(i)
    
        for (i in 1..10){
            print(i)
        }
        println()
        //使用step指定步长
        for(i in 1..4 step 2){
            print(i)![在这里插入图片描述](https://img-blog.csdnimg.cn/73dd3e82979a433291798d7c797b1a22.png#pic_center)
    
        }
        println()
        for(i in 4 downTo  1 step 2){
            print(i)
        }
        println()
        //使用until函数排除结束元素
        for(i in 1 until 10){
            print(i)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    区间 in xx…xx

    默认升序,downTo降序

    并且step指定步长

    并且until排除结尾

  • 相关阅读:
    【亲测】网址引导页管理系统
    Arthas--的使用
    mapstruct lombok结合使用
    【AIGC调研系列】llama 3与GPT4相比的优劣点
    MyLife - Docker安装MySQL
    图像操作的基石Numpy
    网络安全常用命令
    基于 RocketMQ 的 Dubbo-go 通信新范式
    Java程序设计——Swing UI 高级组件(三)
    好用且免费的ChatGPT工具
  • 原文地址:https://blog.csdn.net/m0_56660665/article/details/134489673