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

相关推荐
heeheeai6 小时前
kotlin kmp 副作用函数 effect
kotlin·effect·kmp·副作用函数
纳于大麓7 小时前
Kotlin基础语法一
android·开发语言·kotlin
KotlinKUG贵州11 小时前
Spring开发,从Kotlin开始
spring boot·spring·kotlin
移动开发者1号14 小时前
Android中Activity、Task与Process的关系
android·kotlin
移动开发者1号14 小时前
Activity onCreate解析
android·kotlin
alexhilton1 天前
在Android应用中实战Repository模式
android·kotlin·android jetpack
雨白1 天前
高阶函数与内联优化
kotlin
&岁月不待人&1 天前
实现弹窗随键盘上移居中
java·kotlin
移动开发者1号2 天前
Android Activity状态保存方法
android·kotlin
移动开发者1号2 天前
Volley源码深度分析与设计亮点
android·kotlin