当前位置: 首页 > article >正文

Kotlin学习(一)

Kotlin学习(一)

1.使用IDEA构建Kotlin项目

在这里插入图片描述

新建工程即可

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

2.Hello World

package com.simon

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

3.常量与变量

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.类型推断

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.基础类型大小

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.布尔值类型

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.函数

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.字符串模板

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检查

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类型检测以及自动类型转换

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.区间

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


http://www.kler.cn/news/135053.html

相关文章:

  • 图像分类(三) 全面解读复现VGGNet
  • LeetCode100131. Make Three Strings Equal
  • OSCP系列靶场-Esay-DC-1
  • 在 Qt 框架中,有许多内置的信号可用于不同的类和对象\triggered
  • 数据结构【DS】数组
  • IDEA常用插件合集
  • 产业区块链生态日:你的故事,我们在等待 | 征集帖
  • 软文推广如何实现效果?媒介盒子为你支招
  • 选择java商城开发商需要注意哪些方面?
  • Web前端—小兔鲜儿电商网站底部设计及网站中间过渡部分设计
  • Vue 路由缓存 防止路由切换数据丢失 路由的生命周期
  • 虾皮台湾站点如何选品
  • 关于代码混淆,看这篇就够了
  • NX二次开发UF_CAM_ask_f_s_db_object 函数介绍
  • redis+python 建立免费http-ip代理池;验证+留接口
  • IC卡操作软件支持PN532
  • python 集合(set)
  • 基于 FFmpeg 的跨平台视频播放器简明教程(十一):一种简易播放器的架构介绍
  • 如何解决swagger-editor在线接口调试时的跨域问题
  • 海外IP代理如何助力跨境电商?
  • 海外媒体发稿:出口贸易媒体发稿16个超实用技巧-华媒舍
  • 系列九、JUC强大的辅助类
  • 3.ubuntu20.04环境的ros搭建
  • 使用requests库进行网络爬虫:IP请求错误的解决方法
  • 免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
  • 2.发送邮件+开发注册功能
  • uniapp、小程序canvas相关
  • 金蝶云星空ScpSupRegHandler任意文件上传漏洞复现 [附POC]
  • 【【VDMA彩条显示实验之四 含C语言代码】】
  • android studio导入eclipse项目