Kotlin学习手册之基础语法【修炼秘籍】

修行路漫漫,初入编程之道,领悟基本语法,掌握基础概念,点滴之间,奠定坚实基础。

Kotlin入门

Kotlin是一种现代的编程语言,由JetBrains公司开发并于2011年首次发布。它的设计初衷是解决一些Java语言中的缺陷,同时与Java高度兼容,使得开发者可以轻松地在现有的Java项目中引入Kotlin代码。本系列面向于有一定基本功的少侠,由于我过去是JAVA流派,所以大多数描述的角度是与JAVA对比而叙述,即面向JAVA程序员所著。本文核心内容是我基于Kotlin官方英文文档的整理与理解,如有纰漏,还请海涵,望您指正!

开门见山,通过代码的方式直接向你输送Kotlin心法:

天地初开,主函数之始

每个编程世界都有一个起始点,如同天地初开。Kotlin的主函数便是万物的起点,定义程序的入口,开启整个代码世界的探索旅程。
可以看出,Kotlin的主函数比JAVA的psvm(public static void main的缩写)简明很多。

// 写法1
fun main() {
	println("Hello world!")
}
// 写法2
fun main(args: Array<String>) {
	println(args.contentToString())
}

言灵之术,输入与输出

在编程的修行中,输入与输出如同言灵之术,是与世界沟通的桥梁。通过输入,我们接受世界的讯息;通过输出,我们传达思想的回响。掌握言灵之术,方能与外界交流无碍,操控数据如同施展魔法。
println()为输出后换行,print()为输出后不换行;readln()作为字符串输入的整行

// 输出
println("输入些什么: ")

// 读取并存储用户的输入。例如:Hello
val yourWord = readln()
print("你输入的是: ")
print(yourWord)
// 你输入的是: Hello

术法之精妙,函数之方法

函数,如同术法,是代码之道的精妙之术。掌握函数的定义与调用,如同术士掌握法术,灵活运用之。
使用fun,如果是无返回值类型要把方法结尾的类型设为Unit,或者直接省略

// 有返回类型
fun sum(a: Int, b: Int): Int {
	return a + b
}
// 无返回类型
fun sum(a: Int, b: Int): Unit{
	print(a+b);
}

修炼之根基——变量

掌握变量与常量,如同修炼之根基,掌控能量之源。知晓var与val的奥义,灵活应对变化。

  • 声明变量的方式
// 声明 不可改变 的基础类型,即初始化后不能改变值
val x : Int = 5
// 声明 可以改变 的基础类型,即初始化后可以改变值
var x : Int = 5
x += 1
// Kotlin也支持自动推断和识别数据类型,类似于JAVA中的装箱
val x = 5
// 也可以先声明变量,再赋值等功能这里不再赘述,与JAVA雷同

  • String类类型的模板替换,使用符号"$"
var a = 1
val s1 = "a is $a"

a = 2
val s2 = "${s1.replace("is", "was")}, but now is $a"

造物之力——类

类与对象,如同造物之力,是代码世界的基石。掌握类的定义与对象的实例化,创造属于自己的世界。

继承的方式(默认情况下,类都是final类型,需要open关键字使其开放)

// 创建类的方式
Class Rectangle(val height: Double, val length: Double) {
	val perimeter = (height + length) * 2
}
// 继承类的方式
open class Shape
class Rectangle(val height: Double, val length: Double): Shape() {
	val perimeter = (height + length) * 2
}

变化之道,条件判断的抉择

  • 条件表达式
    编程之道,如同修行之道,变化莫测。条件判断与循环控制,是应对变化之利器,掌握之,方能行走自如。
// 简写版本,详细版本与JAVA一样
fun maxof(a: Int, b: Int) = if (a > b) a else b

  • 循环方式,与Python类似
val items = listOf("a", "b", "c")
for(item in items) {
	println(item)
}
// 或者
for(index in items.indices) {
	println("item at $index is ${items[index]}")
}


  • 选择表达式
for describe(obj: Any): String = 
	when (obj) {
		1 -> "一个"
		2 -> "两个"
		else -> "未知"
	}

  • 范围选取
// 类型1 
val x = 9
val y = 10
if (x in 1..y+1) {
	print("范围内")
}

// 类型2 其中 indices是0..2,list的取值范围
val list = listOf("a", "b", "c")
if (-1 !in 0..list.lastIndex) {
	println("-1超出了控制范围")
}
if (list.size !in list.indices) {
	print("列表大小也超出了有效的列表索引范围")
}

//-1 is out of range
// list size is out of valid list indices range, too

// 类型3 循环输出,并且指定步数,可以自己去试试输出的结果
for (x in 1..5) {
    print(x)
}
for (x in 1..10 step 2) {
    print(x)
}
println()
for (x in 9 downTo 0 step 3) {
    print(x)
}

万物归一——集合类

集合,是编程世界的众生百态。掌握集合操作,如同掌握众生之法,数据处理,如同整理万物。

// exp1 普通的循环
for (item in items) println("item")
// exp2 检查是否集合中存在
when {
	"orange" in items -> println("juicy")
    "apple" in items -> println("apple is fine too")
}
// exp3 使用lambda表达式(列表中为白凝冰、古月方源、古月方正)
val fruits = listOf("bainingbing", "guyuefangyuan", "guyuefangzheng")
fruits
	.filter { it.startsWith("guyue")}
	.sortedBy { it }
	.map { it uppercase() }
	.forEach { println(it) }
// 输出:
// GUYUEFANGYUAN 
// GUYUEFANGZHENG 

  • 可为null值的变量,在后面加"?"即可

  • 类型检查可以使用is运算符
fun getStringLength(obj: Any): Int? {
    if (obj is String) {
        // `obj` 自动转化为String
        return obj.length
    }

    // `obj` 不是String则直接return
    return null
}
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值