day01【Kotlin基础】从零开始,最美的梦想一定最疯狂

day01【Kotlin】

前言

0.什么是Kotlin?

中文:靠他灵

Jetbrains发布基于JVM的编程语言

groovy scalaJetbrains是做编译器起家的公司,总部捷克,有圣彼得堡和美国分部

Jetbrains https://www.jetbrains.com/

kotlin之父: Andrey Breslav

1533472467865

1.为什么使用Kotlin?

1.简洁(数据类 扩展方法 区间)

2.空值安全(针对空值处理的运算符)

3.百分百兼容 java scala

4.函数式编程 JDK1.8 lambda 表达式

5.协成(thread)

6.DSL(领域特定语言)

2.kotlin的前景?

1.kotlin script(gradle groovy).kts

2.Java虚拟机应用

Web kotlinee

Javafx JDK1.8之后

3.前端开发 Kontlinjs html+css+js

4.Android开发

5.支持开发 ios oc swift

6.Kotlin Native 程序(完全抛弃JVM虚拟机) 全栈工程师

3.kotlin的格式:

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

4.kotlin 基本数据类型

数据类型占用字节取值范围
Boolean1bytetrue或false
Byte1byte=8bit-128~127
Char2byte
Short2byte=16bit-32768~32767
Int4byte-2147483648~2147483647
Float4byte精确到小数点后6位
Long8byte9223372036854775807~9223372036854775807
Double8byte精确到小数点后15到16位
a.基本数据类型书写格式:
var byte:Byte = 10
var short:Short = 20
var int:Int = 30;
var char:Char = 'H'
var float:Float = 1.2345f
var double:Double = 1.23456
var long:Long = 200
var b:Boolean= true
b.kotlin 和 Java 基本数据类型的区别

kotlin只有基本数据类型 没有包装数据类型

kotlin 基本数据类型相当于具备了java的基本数据类型和包装数据类型

会更具不同的使用场景选择使用基本数据类型还是包装数据类型

c.Kotlin 与 Java 虚拟机

java虚拟机的最大特点 : 跨平台

如何把Kotlin转化为Java文件:

首先把Kotlin 编译成.class文件,重新转化为Java文件

Iools->kotlin->Show Kotlin Bytecode

d.智能类型推断和类型转化

kotlin对于数据类型的转化比较严格,不同的数据类型之间不能转化,需要通过to数据类型方法实现转化.

格式:

var m =10 // int类型

var n  =20L // long类型

m = m.toLong   把int类型转化为long类型

n = n.toInt    把long类型转化为int类型

5.Var 和 Val的区别

a.var 对应的就是Java的普通变量
b.val 对应的就是 Java的final变量
c.final 编译器常亮
d.val 运行时的
变量可变:var

var a =20

a=30

a=50

变量不可变:val

val a = 20

a =30  //报错

ps: 在我们项目开发中,能够使用val的话尽量使用val,实在不行的话再使用var

6.Kotlin 对于字符串的使用

/*---------------------------- 普通字符串 ----------------------------*/
fun main(args: Array<String>) {
//地址
val place = "广东省深圳市宝安区"
通过方法实现跨行答应
val place ="广东省\n深圳市\n宝安区
println(place)
}
打印结果: 广东省
         深圳市
         宝安区
kotlin字符串的原样输出字符串使用:
/*---------------------------- 原样输出字符串:自动帮我们加上一些特殊字符 -----------------------*/

val place = """           
   /中国
   /北京
   /长城
""".trimMargin("/")
println(place)

打印结果: 中国
         北京
         长城
kotlin字符串的删减使用:
fun main(args: Array<String>) {
    val s = "  张三  "
    println(s)  //张三
    /*---------------------------- 删除空格 ----------------------------*/
    println(s.trim())
    /*---------------------------- 原样输出字符串删除空格 ----------------------------*/
    val place = """
        /中国
        /北京
        /长城
    """.trimMargin("/")
    println(place) 

 打印结果:中国
         北京
         长城
kotlin字符串的比较使用:

/*---------------------------- 字符串比较 ----------------------------*/
val str1 = "hello"
val str2 = String(charArrayOf('h','e','l','l','o'))
println(str1)
println(str2)

//equals 比较的是值
println(str1.equals(str2))
//==和equals效果是一样的
println(str1==str2)
//=== 比较的是地址 相当于java的==
println(str1 === str2)
kotlin字符串的截取使用:

fun main(args: Array<String>) {
    val path = "/Users/yole/kotlin-book/chapter.adoc"
    /*---------------------------- 获取前6个字符 ----------------------------*/
    val result1 = path.substring(0,6)
    println(result1)

     /*---------------------------- 把第一个r之前的字符截取 ----------------------------*/

 先找第一个r角标
    val index = path.indexOf("r")
    val result2 = path.substring(0,index)
    println(result2)

kotlin方法:
    val result2 = path.substringBefore("r")
    println(result2)

    /*---------------------------- 把最后一个r之前的字符截取 ----------------------------*/
    val result3 = path.substringBeforeLast("r")
    println(result3)

    /*---------------------------- 把第一个r之后的字符截取 ----------------------------*/
    val result4 = path.substringAfter("r")
    println(result4)
    /*---------------------------- 把最后一个r之后的字符截取 ----------------------------*/
    val result5 = path.substringAfterLast("r")
    println(result5)
}

7.Kotlin 元组数据(特有)

二元组:Pair

三元组:Triple

fun main(args: Array<String>) {
    /*---------------------------- 二元元组 ----------------------------*/

   val pair = Pair<String,Int>("张三",20)
   val pair = "张三" to 20
   val name = pair.first
   val age = pair.second
   println(name)
   println(age)
/*---------------------------- 三元元组 ----------------------------*/
//Triple
//姓名  性别 年纪
val triple = Triple<String,String,Int>("李四","男",30)
val name = triple.first
val sex = triple.second
val age = triple.third
println(name)
println(sex)
println(age)

8.空值处理

        ?可空变量类型
val a:Int? = null
        !!非空断言
var age:String = null!!
        ?.空安全调用符
age?.toInt()
        ?:Elvis操作符(猫王)
var ageInt:Int = age?.toInt()?:10

9.打字交互

fun main(args: Array<String>) {
    /*---------------------------- 输出函数 ----------------------------*/
    val str = "hello"
    println(str)
    /*---------------------------- 输入函数 ----------------------------*/
    var a:Int = readLine()?.toInt()?:0
    var b:Int = readLine()?.toInt()?:0
    var result = a+b
    println(result)

 打印结果:
 10
 20
 30

10.kotlin函数

概述:main函数是kotlin程序的入口函数,他是计算机运行起来第一个默认找的第一个运行的函数.

函数包括输入函数与输出函数: (4类函数)

无参无返回值
fun myFun1() { println("myFun1")
}
无参有返回值
fun myFun2(): String {return "myFun2“
}
有参无返回值
fun myFun3(content: String) { println(content)
}
有参有返回值
fun myFun4(content: String): String { return content
}
a.顶层函数

概述:Java里面函数都需要依赖于对象存在不依赖于class类单独存在的函数

例如:

//顶层函数
fun main(args: Array<String>) {

}
//顶层函数
fun sayHello(){

}
b.嵌套函数

概述:函数里面定义的函数

例如:

//嵌套函数
fun main(args: Array<String>) {
    fun hehe(){
        println("hello")
    }

    hehe()
}
c.字符串模板练习
今天天气晴朗,万里无云,我们去中山公园游玩,首先映入眼帘的是,中山公园4个镏金大字。

今天天气晴朗,万里无云,我们去人民大会堂游玩,首先映入眼帘的是,人民大会堂5个镏金大字。

今天天气晴朗,万里无云,我们去金銮殿游玩,首先映入眼帘的是,金銮殿3个镏金大字。

今天天气晴朗,万里无云,我们去鸟巢游玩,首先映入眼帘的是,鸟巢2个镏金大字。

要求:通过规律定义模板

答 :

fun main(args: Array<String>) {
    println(createDiary("中山公园"))
}
//创建字符串模板
//字符串拼接
fun createDiary(place:String):String{
    return "今天天气晴朗,万里无云,我们去$place 游玩,首先映入眼帘的是,${place}${place.length} 个镏金大字。"
}

11.kotlin if语句的使用

a.普通的if语句
if(a>b){return a-b
}else{return b-a
}
b.去{}的if语句
去{}的if/else
   if(a>b)    return a-b  else return b-a
c.精简if/else语句
if(a>b) return a-b else return b-a
d.If返回值语句
return  if (a > b) a - b else b - a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值