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排除结尾

相关推荐
zhangphil16 分钟前
Android简洁缩放Matrix实现图像马赛克,Kotlin
android·kotlin
_Shirley13 小时前
鸿蒙设置app更新跳转华为市场
android·华为·kotlin·harmonyos·鸿蒙
小白学大数据1 天前
高级技术文章:使用 Kotlin 和 Unirest 构建高效的 Facebook 图像爬虫
爬虫·数据分析·kotlin
guitarjoy1 天前
Kotlin - 协程结构化并发Structured Concurrency
kotlin·协程·coroutinescope·结构化同步
zhangphil2 天前
Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现“刮刮乐”效果,Kotlin(2)
android·kotlin
居居飒3 天前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
刘争Stanley4 天前
如何高效调试复杂布局?Layout Inspector 的 Toggle Deep Inspect 完全解析
android·kotlin·android 15·黑屏闪屏白屏
sickworm陈浩4 天前
Java 转 Kotlin 系列:究竟该不该用 lateinit?
android·kotlin
droidHZ5 天前
Compose Multiplatform 之旅—声明式UI
android·kotlin
zhangphil5 天前
Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆角矩形实现,Kotlin(1)
android·kotlin