kotlin 快速上手

这篇博客介绍了Kotlin的基础语法,包括简洁的Hello,World!示例,与Java的对比,变量声明,逻辑运算,函数定义,控制结构如if和when,以及类和对象的创建。Kotlin的语法糖使得代码更简洁,同时强调了类型自动推导和构造函数的设计原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hello ,world

最简单的一段

fun main(){
    println("Hello, World!")
}

对比下 Java 的 hello,world ,简直不要太爽

public class Hello{
	public static void main(String[] args){
		System.out.println("Hello, World!");
	}
}

有点 Java 体系下的 Python 那味道了

println 和Java System.out.println 相同

变量

关键词:

  1. val 声明常量
  2. var 声明变量

现在不需要在定义变量前确定数据类型了,还有点不适应

fun main(){
    val a = 1
    var b = 2
    println("" + a + " " + b)
}

特别注意: 如果一个 prinln 语句里面需要输出多个变量,需要像上面这样做,在前面手动添加双引号表示一个输出的开头

当然,kotlin 中也可以显示地声明数据类型,如果像上面这样,没有声明数据类型,数据类型则会被自动推导出,大部分情况下是够用的,像 Python 一样,部分情况需要自己声明的还是需要去声明

**有一个与 Java 中的不同点:**数据类型的名字虽然一样,但是开头必须大写,因为底层实现不一样,kotlin 使用的是类封装的数据类型,像 string 类那样,这个需要注意

例如:Java 中的 int ,kotlin 中则是 Int,以及 double 与 Double

常用运算

逻辑运算和其他语言差不多

函数

格式:

fun Function(a1: Int, a2: Double): Int{
    return 0
}
  1. fun 关键字
  2. 紧跟着的是函数名
  3. 后面的括号里面,形参名字:数据类型,形参名字和数据类型使用冒号一一对应
  4. 最后是返回值

与 Python 的不同:

  • 形参列表中需要指定形参的数据类型

语法糖:

什么是语法糖?
可以理解为一些小彩蛋

fun Function(a1: Int, a2: Double) = 表达式

当 函数里面的内容较少的时候,可以这么用,因为表达式的结果肯定是一个确定的数据类型,所以,返回值的类型都不用写上去了

逻辑控制

if 语句们

包括,if ,else, else if
用法跟 C 语言一样

注意点:

  1. if 的表达式可以有返回值
  2. 花括号里面的东西可以只有一个数字
  3. 还可以直接在函数的 return 里面写
fun a():Int{
    return if ( 2 > 3){
        1
    }else{
        2
    }
}

像下面这么写,也是没有问题的

如果 b 的数值大于 c 则将 b 的数值作为返回值,否则是 c ,直接省去了 return

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

switch

kotlin 中使用 when ,而没有 switch

when 的括号中,可以传入任意类型的参数

fun b(number: Int){
    when (number){
        1 -> "a"
        2 -> "b"
    }
}

格式:
when (表达式){
表达式_1n -> 表达式_2n
}

for 循环

for (循环变量 in 起点 until 终点 step 步长)

for (i in 1 until 10 step 2){
        
    }

使用 until 最终会循环到 终点 - 1 的位置,就像 i < n 那样

如果步长为 1 还可以这么写

for (i in 1..10){
        
    }

如果在里面添加 println( i ) 可以看到输出的结果为 1 到 10

类和对象

类的定义与实例化

最简单的如下

class Test_class {
    
}

如果需要被继承,需要在 class 前面加上 open

open class Test_class {
    
}

继承某个类呢?

class Test_class : 被继承的类的名称(){
    
}

实例化的过程和 Java 中一样

类名 对象名 = new 类名(构造函数的参数列表)

构造函数:

kotlin 里面有主构造函数,还有次构造函数,是不是听起来和其他语言有很大差别,有点诡异,别多想,先往下看

下面使用的是主构造函数

class Test_class(val a: Int, val b: Int) {
    init {
        println(a)
        println(b)
    }
}

init 表示的是构造函数的函数体,相当于 Python 中的__init__

问题来了:如果我需要根据传入参数的个数,进行不同的初始化,怎么办?

使用,次构造函数

而且,需要对函数参数的个数进行重新设计

??? 为什么

先看一段 C++ 的构造函数

Test_class(int a)
Test_class(int a, int b)
Test_class(int a, int b,int c)

在 C++ 中,可以利用函数的重载,对传入参数个数的不同的情况,针对性地进行初始化

在 kotlin 中,有这么一个原则:次构造函数被调用前,主构造函数必须被调用

是不是马上就想到 kotlin 中,构造函数的参数怎么设计了呢?

  1. 主构造函数的参数个数最小化
  2. 次构造函数进行拓展

所以,主构造函数设计一个参数 a 即可,对 b,c 这些参数,再针对性地进行设计其他参数的次构造函数

也就是:宁少勿多

对了,次构造函数是这么用的:

class Test_class(val a: Int, val b: Int) {
	// 主构造函数函数体
    init {
        println(a)
        println(b)
    }
    // 次构造函数
    constructor(参数列表){
    
    }
}

接口

跟 Java 里面的一样,函数不能有函数体,整个东西是高度抽象的

interface a{
    函数名()
}

访问范围控制符

和 Java 中的一样,Java 中有一个 default 而 kotlin 中,默认(没显示地写出来的时候)的是 public

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值