Kotlin语法-Day1


一、前言

在学习之前,我们先来了解一下kotlin,在这里,我不会再去介绍kotlin 的发展史,我们直接来说一下我个人对于kotlin 的理解:

  • kotlin 包含了大量的语法糖,在编码的时候,会大大的简化我们的代码量及工作效率,kotlin 中的高阶函数,扩展函数,委托,数据类,密封类,集合操作,可空类型等等。相比传统的Java 语言,kotlin 种大量的简写,可以减少很多用Java 必须要写的样板代码,减少大量的 if…else 等嵌套,减少大量接口的实现,代码结构也会更加清晰。
  • 目前在安卓开发中,当你查看源码的时候,你会发现大量的kotlin 源码,在使用一些 jetpack 框架的时候,大部分都是kotlin 语言。
  • kotlin将成功Android 开发的首选语言, 如compose 开发,就只能使用 kotlin 语言。

二、基本语法

2.1包的定义与导入

包的声明应处于源文件顶部。

package my.demo

import kotlin.text.*

2.2程序入口点

Kotlin 应用程序的入口点是 main 函数。

fun main() {
    println("Hello world!")
}

main 的另一种形式接受可变数量的 String 参数。

fun main(args: Array<String>) {
    println(args.contentToString())
}

2.3输出打到标准输出

print 将其参数打到标准输出。

fun main() {
//sampleStart
    print("Hello ")
    print("world!")
//sampleEnd
}

println 输出其参数并添加换行符,以便接下来输出的内容出现在下一行。

fun main() {
//sampleStart
    println("Hello world!")
    println(42)
//sampleEnd
}

在这里插入图片描述

2.4变量

定义只读局部变量使用关键字 val 定义。只能为其赋值一次。

fun main() {
//sampleStart
    val a: Int = 1  // 立即赋值
    val b = 2   // 自动推断出 `Int` 类型
    val c: Int  // 如果没有初始值类型不能省略
    c = 3       // 明确赋值
//sampleEnd
    println("a = $a, b = $b, c = $c")
}

可重新赋值的变量使用 var 关键字。

fun main() {
//sampleStart
    var x = 5 // 自动推断出 `Int` 类型
    x += 1
//sampleEnd
    println("x = $x")
}

可以在顶层声明变量

//sampleStart
val PI = 3.14
var x = 0

fun incrementX() { 
    x += 1 
}
//sampleEnd

fun main() {
    println("x = $x; PI = $PI")
    incrementX()
    println("incrementX()")
    println("x = $x; PI = $PI")
}

ps:编译时常量在函数外声明,就可以可以在编译期间初始了
例如:

const val PI =3.14

2.5字节码文件

在这里插入图片描述

2.6函数

Kotlin 函数使用 fun 关键字声明:

fun double(x: Int): Int {
    return 2 * x
}

带有两个 Int 参数、返回 Int 的函数。

//sampleStart
fun sum(a: Int, b: Int): Int {
    return a + b
}
//sampleEnd

fun main() {
    print("sum of 3 and 5 is ")
    println(sum(3, 5))
}

函数体可以是表达式。其返回类型可以推断出来。

//sampleStart
fun sum(a: Int, b: Int) = a + b
//sampleEnd

fun main() {
    println("sum of 19 and 23 is ${sum(19, 23)}")
}

返回无意义的值的函数。

//sampleStart
fun printSum(a: Int, b: Int): Unit {
    println("sum of $a and $b is ${a + b}")
}
//sampleEnd

fun main() {
    printSum(-1, 8)
}

Unit 返回类型可以省略。

//sampleStart
fun printSum(a: Int, b: Int) {
    println("sum of $a and $b is ${a + b}")
}
//sampleEnd

fun main() {
    printSum(-1, 8)
}

2.7创建类与实例

使用 class 关键字定义类。

class Shape

类的属性可以在其声明或主体中列出。

class Rectangle(var height: Double, var length: Double) {
    var perimeter = (height + length) * 2 
}

具有类声明中所列参数的默认构造函数会自动可用。

class Rectangle(var height: Double, var length: Double) {
var perimeter = (height + length) * 2
}
fun main() {
//sampleStart
val rectangle = Rectangle(5.0, 2.0)
println(“The perimeter is ${rectangle.perimeter}”)
//sampleEnd
}
类之间继承由冒号(:)声明。默认情况下类都是 final 的;如需让一个类可继承, 请将其标记为 open。

open class Shape

class Rectangle(var height: Double, var length: Double): Shape() {
var perimeter = (height + length) * 2
}

2.8Range

fun main() {

    //rang 范围 从哪里 到哪里
    val number:Int=99
    if (number in 10..59){
        println("不及格")
    }else if (number in 0..10){
        println("分数太低了")
    }else if (number in 60..100){
        println("已经及格了")
    }else if (number !in 0..100){
        println("分数不在0-100区间内 出错了")
    }
}

2.9when表达式

也必须实现else,否则报错

fun main() {
   val s= getScore("Tom")
    println(s)
}
fun getScore(name: String) = when(name){
        "Tom" -> "不及格"
        "Jim" -> "及格"
        "Pony" -> "良好"
        "Tony" -> "优秀"
        else -> "名字非法"
    }

when支持参数检查

fun checkNumber(num: Number) {
    when (num) {
        is Int -> println("Int")
        is Double -> println("Double")
        else -> println("others")
    }
}

在这里插入图片描述

2.10String

fun main() {
    val location="湖南长沙橘子洲"
    var time=6

    println("今天天气很好 ,去 ${location} 玩了$time 小时")
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值