kotlin的学习记录

本文是Kotlin学习笔记,涵盖了Kotlin的基础知识,包括它的简洁性和安全性,以及如何编写第一个程序。文章详细讲解了基本语法,如函数定义、变量声明、注释和字符串模板。此外,还介绍了Kotlin的基本数据类型,如数值类型、比较、类型转换、位操作符、字符、布尔、数组和字符串。最后,提到了条件控制语句。

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


前言

我之前是兴趣使然,因为接触到了移动开发(Android),用的是Java,现在也是想与时俱进。

一、Kotlin是什么?

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
特点:

  1. 简洁: 大大减少样板代码的数量。
  2. 安全: 避免空指针异常等整个类的错误。
  3. 互操作性: 充分利用 JVM、Android 和浏览器的现有库。
  4. 工具友好: 可用任何 Java IDE 或者使用命令行构建。

Kotlin 程序文件以 .kt为后缀名

二、学习引入

1.第一个Kotlin程序

代码如下(示例):

package hello                      //  可选的包头 
fun main(args: Array<String>) {    // 包级可见的函数,接受一个字符串数组作为参数
   println("Hello World!")         // 分号可以省略,换行
   print("Hello World!")           //不换行
}

2.基本语法

  1. 函数定义 :使用关键字 fun,参数格式为:参数 : 类型

  2. 定义常量与变量: 可变变量定义:var 关键字 不可变变量定义:val 关键字

  3. 注释: // 这是一个单行注释 /* 这是一个多行的 块注释。 */

  4. 字符串模板

  5. NULL检查机制
    Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

  6. 区间
    区间表达式由具有操作符形式 … 的 rangeTo 函数辅以 in 和 !in 形成。

//1.函数定义
	fun sum(a: Int, b: Int): Int {   // Int 参数,返回值 Int
	    return a + b
	}
	//表达式作为函数体,返回类型自动推断:
	fun sum(a: Int, b: Int) = a + b	
	public fun sum(a: Int, b: Int): Int = a + b   // public 方法则必须明确写出返回类型	
	//无返回值的函数(类似Java中的void):
	fun printSum(a: Int, b: Int): Unit { 
	    print(a + b)
	}	
	// 如果是返回 Unit类型,则可以省略(对于public方法也是这样):
	public fun printSum(a: Int, b: Int) { 
	    print(a + b)
	}
	//函数的变长参数可以用 vararg 关键字进行标识:	
	fun vars(vararg v:Int){
	    for(vt in v){
	        print(vt)
	    }
	}	
	// 测试
	fun main(args: Array<String>) {
	    vars(1,2,3,4,5)  // 输出12345
	}
	//lambda(匿名函数)表达式使用实例:		
	fun main(args: Array<String>) {
	    val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
	    println(sumLambda(1,2))  // 输出 3
	}
	
//4.字符串模块
	//$ 表示一个变量名或者变量值
	//$varName 表示变量值	
	//${varName.fun()} 表示变量的方法返回值:	
	var a = 1
	// 模板中的简单名称:
	val s1 = "a is $a" 	
	a = 2
	// 模板中的任意表达式:
	val s2 = "${s1.replace("is", "was")}, but now is $a"

// 5. NULL检查机制

	//类型后面加?表示可为空
	var age: String? = "23" 
	//抛出空指针异常
	val ages = age!!.toInt()
	//不做处理返回 null
	val ages1 = age?.toInt()
	//age为空返回-1
	val ages2 = age?.toInt() ?: -1
	//当一个引用可能为 null 值时, 对应的类型声明必须明确地标记为可为 null。
	//当 str 中的字符串内容不是一个整数时, 返回 null:
	
	fun parseInt(str: String): Int? {
	  // ...
	}

//6.区间
	for (i in 1..4) print(i) // 输出“1234
	for (i in 4..1) print(i) // 什么都不输出
	if (i in 1..10) { // 等同于 1 <= i && i <= 10
	    println(i)
	}
	// 使用 step 指定步长
	for (i in 1..4 step 2) print(i) // 输出“13”
	for (i in 4 downTo 1 step 2) print(i) // 输出“42”
	// 使用 until 函数排除结束元素
	for (i in 1 until 10) {   // i in [1, 10) 排除了 10
	     println(i)

该处使用的url网络请求的数据。


三、Kotlin 基本数据类型

1. Kotlin 的基本数值类型包括

Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。

2.比较

在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。

3. 类型转换

// 3. 类型转换
//每种数据类型都有下面的这些方法,可以转化为其它的类型:
	toByte(): Byte
	toShort(): Short
	toInt(): Int
	toLong(): Long
	toFloat(): Float
	toDouble(): Double
	toChar(): Char

4. 位操作符

//4.位操作符
//对于Int和Long类型,还有一系列的位操作符可以使用,分别是:
	shl(bits) – 左移位 (Java’s <<)
	shr(bits) – 右移位 (Java’s >>)
	ushr(bits) – 无符号右移位 (Java’s >>>)
	and(bits) – 与
	or(bits) – 或
	xor(bits) – 异或
	inv() – 反向

5. 字符

和 Java 不一样,Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号 ’ 包含起来的。比如普通字符 ‘0’,‘a’。

6. 布尔

Boolean :true 和 false。若需要可空引用布尔会被装箱。
内置的布尔运算有:|| – 短路逻辑或 && – 短路逻辑与 ! - 逻辑非

7. 数组

数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,所以我们可以通过下标很方便的获取或者设置数组对应位置的值。

数组的创建两种方式:一种是使用函数arrayOf();另外一种是使用工厂函数。如下所示,我们分别是两种方式创建了两个数组:

//7.数组
fun main(args: Array<String>) {
    //[1,2,3]
    val a = arrayOf(1, 2, 3)
    //[0,2,4]
    val b = Array(3, { i -> (i * 2) })

    //读取数组内容
    println(a[0])    // 输出结果:1
    println(b[1])    // 输出结果:2
}
//如上所述,[] 运算符代表调用成员函数 get() 和 set()。
//注意: 与 Java 不同的是,Kotlin 中数组是不协变的(invariant)。
//除了类Array,还有ByteArray, ShortArray, IntArray,用来表示各个类型的数组,
//省去了装箱/操作,因此效率更高,其用法同Array一样:
val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]

8.字符串

String 可以通过 trimMargin() 方法来删除多余的空白。
Kotlin 支持三个引号 “”" 扩起来的字符串,支持多行字符串,比如:

fun main(args: Array<String>) {
    val text = """
    多行字符串
    多行字符串
    """
    println(text)   // 输出有一些前置空格
}
fun main(args: Array<String>) {
    val text = """
    |多行字符串
    |菜鸟教程
    |多行字符串
    |Runoob
    """.trimMargin()
    println(text)    // 前置空格删除了
}

四、Kotlin 条件控制

条件控制详情

总结

参考资料
以上就是今天的内容,仅仅是提取,供自己平时参考为用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

joyyi9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值