Kotlin开始基本知识(一):基本语法

Kotlin开始

一、基本语法

1、包的定义与导入

package xxx包
import xxx模块

和Java基本相同

2、程序入口

fun main() {
       println("xxxxxxx一个字符串")
}

在主函数main()之前,要加上“fun”

3、函数

1)基本的函数定义和主函数main()定义

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

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

在Kotlin中,“fun”相当于定义一个函数,相当于python中的“def”
在函数的输入变量中,使用冒号,来定义变量类型。

//在Kotlin中定义一个函数
fun sum(a: Int, b: Int): Int {
    return a + b
}
#在python中定义一个函数
def sum(a:int,b:int):
     return a+b

比较类似。
(1)、不同点在于在sum():函数的后面,把函数体放在一个大括号里面。
(2)、在主函数main()后面,使用大括号{},替代了冒号:
※※※需要注意,
在Kotlin中,一般的普通函数,在函数名称后,需要加了冒号:,还要加大括号{}。而主函数main(),不同于普通函数,它只需要在其后加大括号{},不需要加冒号:。

2)将表达式作为函数体的用法

//表达式作为函数体的高级写法
fun sum(a: Int, b: Int) = a + b

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

和普通的写法对比

//普通写法
fun sum(a: Int, b: Int): Int {
    return a + b
}

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

(1)、高级写法直接在函数名sum()后面,写上这个函数的表达式,并且用等于号"=",把函数名sum()和表达式相连。
(2)、在主函数main()的函数体中,把函数赋值的操作,直接写到字符串里面。把函数赋值的操作,放入大括号{}之内,然后使用$符号,直接将二者相连。

3)把主函数main里面的输出语句,写进普通函数

//复杂写法
fun printSum(a: Int, b: Int): Unit {
    println("sum of $a and $b is ${a + b}")
}

fun main() {
    printSum(19, 23)
}

和表达式作为函数体的写法对比

//表达式作为函数体的高级写法
fun sum(a: Int, b: Int) = a + b

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

(1)、复杂写法直接在函数名之后,把主函数main()大括号{}里的内容,还有大括号,放在后面,并用冒号:和Unit相连。
(2)、这个冒号:和Unit,是可以不写的。

4、变量

$变量名,为取这个变量的值

1)只读局部变量

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

val定义的值不可以变。value:值

2)可重新赋值变量

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

var定义的值可以变。various:各种

5、注释

1)单行注释

两个斜杠

//这个呢,就是单行注释

2)多行和嵌套注释

多行注释

/*这个呢,就是多行注释
多行注释呢,就是这样写*/

嵌套注释

/*66666666666
/*666666666
/* 注释从这里开始
/* 注释从这里开始
/* 包含嵌套的注释    
并且在这里结束。 */

※※※注意在嵌套注释里面,注释开始符号/*,可以有很多个。但是注释结束符号,只可以有一个。

6、字符串模板

1)$加变量名,就是取某个变量的值

2)某个变量,经过某个方法后,再取值的话。就应该先用大括号把变量名和方法括起来,然后再在前面加上$

7、条件表达式

1)if表达式,判断条件写在小括号()里面,表达式写在大括号{}里面。

fun maxOf(a: Int, b: Int): Int {
    if (a > b) {
        return a
    } else {
        return b
    }
}

fun main() {
    println("max of 0 and 42 is ${maxOf(0, 42)}")
}

2)if表达式,写成一行

fun maxOf(a: Int, b: Int) = if (a > b) a else b

fun main() {
    println("max of 0 and 42 is ${maxOf(0, 42)}")
}

8、空值与null检测

1)定义变量后,始终不赋值,它就是一个空值。

2)定义变量后,不确定会不会被赋值或者本身是空值,就在类型那里定义为Int?。

9、类型检测与自动类型转换

1)不确定输入的某obj是哪种类型时,就obj:any

10、for循环

1)for循环的表达式,和if判断一样,都放在小括号()里面

2)可以直接遍历listof类型的小括号里的内容。或者先items.indices,取出这个items的所有成员的索引index(从0开始)。

11、while循环

1)和for几乎一样,不同在于表达式是索引小于最大值。然后在循环体中,索引自增。

12、when表达式

1)类似于函数一一对应,when()括号里输入一个值。这个值进入大括号{}后,按照里面使用"->"一一对应的一行行式子,自己匹配x,输出y。

//函数的一一对应,如下
fun describe(obj: Any): String =
    when (obj) {
        1          -> "One"
        "Hello"    -> "Greeting"
        is Long    -> "Long"
        !is String -> "Not a string"
        else       -> "Unknown"
    }

13、使用区间

1)区间是从小到大的话,就直接1…10,表示从1到10。

kotlin区间迭代

//input
for (x in 1..5) {
    print(x)
}
//output
12345

python

#input
for x in range(1,5):
    print(x)
#output
12345

2)区间是从大到小的话,就用downTo。

//input
for (x in 5 downTo 1 step 1) {
    print(x)
}
//output
54321

14、集合

1)迭代集合,见for循环。

2)集合中是否包含某实例,使用in。然后可以使用when,来输出是否包含

15、创建基本类及其实例

1)代码例子

fun main() {
    val rectangle = Rectangle(5.0, 2.0)
    val triangle = Triangle(3.0, 4.0, 5.0)
    println("Area of rectangle is ${rectangle.calculateArea()}, its perimeter is ${rectangle.perimeter}")
    println("Area of triangle is ${triangle.calculateArea()}, its perimeter is ${triangle.perimeter}")
}

abstract class Shape(val sides: List<Double>) {
    val perimeter: Double get() = sides.sum()
    abstract fun calculateArea(): Double
}

interface RectangleProperties {
    val isSquare: Boolean
}

class Rectangle(
    var height: Double,
    var length: Double
) : Shape(listOf(height, length, height, length)), RectangleProperties {
    override val isSquare: Boolean get() = length == height
    override fun calculateArea(): Double = height * length
}

class Triangle(
    var sideA: Double,
    var sideB: Double,
    var sideC: Double
) : Shape(listOf(sideA, sideB, sideC)) {
    override fun calculateArea(): Double {
        val s = perimeter / 2
        return Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值