Kotlin学习(一)

Kotlin学习(一)

1.使用IDEA构建Kotlin项目

新建工程即可

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

2.Hello World

kotlin 复制代码
package com.simon

fun main(args:Array<String>){
    println("hello kotlin");
}

3.常量与变量

kotlin 复制代码
package com.simon
//变量声明与使用
fun main(args:Array<String>){
    //变量
    var name = "张三"
    name = "李四"
    println(name)

//    name = 8 //8是一个数字不能放到String里面
    println(name)
}

常见的数据类型:

Byte 2的8次方

Short 2的16次方

Int 2的32次方

Long 2的64次方

Float 小数点后6位

Double 小数点后15-16位

String 字符串

Boolean 布尔型

4.类型推断

kotlin 复制代码
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是常量所以说是只读
    
}

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

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

5.基础类型大小

kotlin 复制代码
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)
}

6.布尔值类型

kotlin 复制代码
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)
}

7.函数

kotlin 复制代码
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}

8.字符串模板

kotlin 复制代码
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)
}

总结:

$ 可以是变量值

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

9.NULL检查

kotlin 复制代码
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

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

kotlin 复制代码
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
}

is and !is 类型判断

11.区间

kotlin 复制代码
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)
    }
}

区间 in xx...xx

默认升序,downTo降序

并且step指定步长

并且until排除结尾

相关推荐
事圆则缓16 分钟前
Kotlin 入门与面试:从空安全、扩展函数到协程
安全·面试·kotlin
传奇开心果编程2 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程3 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程3 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程4 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
传奇开心果编程4 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
熊猫钓鱼>_>20 小时前
Kotlin Multiplatform for OpenHarmony 实战:为 Reaktive 实现响应式原语适配(完整版 · 含摘要目录与技术图表)
华为·kotlin·大模型·ai编程·harmonyos·适配·reaktive
李游Leo1 天前
HarmonyOS 7 InsightBoard 多形态适配实录 06:ArkUI × 多设备回归:布局抖动、监听释放与全形态验收【鸿蒙心迹】
回归·kotlin·harmonyos
点燃大海1 天前
手机给平板当键盘?
kotlin
李游Leo1 天前
HarmonyOS 7 QuickDock 闪控窗开发实录 06:floatView × 回归验收:25轮场景回归、资源基线与发布前收口【鸿蒙心迹】
回归·kotlin·harmonyos