Kotlin快速入门:基础语法、类与继承、集合

本文是Kotlin编程的基础教程,涵盖了Kotlin的主要语法特性,包括入口函数、数据类型、变量、函数、条件语句、循环语句、字符串、类与继承、接口、集合等内容。通过详细的代码示例,帮助读者快速掌握Kotlin编程基础。
摘要由CSDN通过智能技术生成

参考书籍:

  • 《AtomicKotlin》,全英文,读起来慢,但是写得很详细,没有任何语言基础的也能看懂
  • 《第一行代码 Android 第三版》,第二章,有java基础的看一看就会了
  • Kotlin中文文档,很详细,可以当作字典查看,挨着看有点太多了

       

       

       

       

1 基础语法

1.1 入口函数

        kotlin程序的入口是main函数(方法),下面是一个最简单的main函数,程序将从这里开始执行:

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

        fun是声明方法的关键字,println是一个打印语句。main方法也可带输入参数:

fun main(args:Array<String>) {
   
	println("Hello, world!")
}

        kotlin每个语句后可以不加分号,如果多个语句写在同一行,需要用分号隔开,但并不推荐将多个语句写在一行。

       

       

1.2 输出

        输出可以用print()或println()方法,两者的区别是,print()打印后光标不会移动到下一行,println()打印后光标会移动到下一行(多个换行)。

fun main() {
   
	print("Hello,")
	print("world!")
	// 输出
	// Hello,world!
}
fun main() {
   
	println("Hello,")
	println("world!")
	// 输出
	// Hello,
	// world!
}

       

       

1.3 对象数据类型

        kotlin中对象数据类型的首字母是大写的,比如Int,但在java和c++中基本数据类型首字母是小写的。两者的差距并不是首字母大小写这么简单,kotlin中Int变成了一个类,它拥有自己的方法和继承结构。

Double 双精度浮点型,8字节
Long 长整型,8字节
Float 单精度浮点型,4字节
Int 整型,4字节
Short 短整型,2字节
Byte 字节
Boolean 布尔型
Char 字符型

       

       

1.4 变量和常量

        关键字var用于定义变量,关键字val用于定义常量。定义格式如下:

fun main() {
   
	val whole: Int = 11 			
	var fractional: Double = 1.4    
	val trueOrFalse: Boolean = true 
	var words: String = "A value"   
	val character: Char = 'z' 
	val lines: String = """Triple quotes let
							you have many linesin your string"""
}

也可以不写数据类型,编译器会做类型推断:

fun main() {
   
	val whole = 11 
	var fractional = 1.4 
	val trueOrFalse = true 
	var words = "A value" 
	val character = 'z' 
	val lines = """Triple quotes let
				you have many linesin your string"""
}

       

       

1.5 方法(函数)

函数定义基本格式:

fun functionName(p1: Type1, p2: Type2, ...): ReturnType {
   
	lines of code
	return result
}

        以关键字fun开头,然后是函数名,括号里是入参p1,p2,入参的数据类型是Type1,Type2,括号外是返回值类型ReturnType。
       下面是一个加法程序示例:

// 加法程序
fun add(x: Int,y:Int): Int {
    
	return x + y
}
// 主函数
fun main() {
   
val r = add(5,7) 
println(r)
}

        当函数没有返回值时,返回值类型写成Unit,Unit可以省略不写,示例如下:

fun sayHello() {
   			// 可以省略Unit
	println("Hallo!")
}
fun sayGoodbye(): Unit {
   	// 可以写
	println("Auf Wiedersehen!")
}

       

       
        以上用大括号包围的函数体称为block body。当函数体非常简单,比如只有一个表达式时,可以写成=表达式的格式,这种称为expression body

// 这是一个计算3倍x的值的函数,函数体可以写成 =x*3
fun multiplyByThree(x: Int): Int = x * 3

       当函数体为expression body时,可以省略返回值类型,编译器会自动推断返回值类型:

// 这是一个计算3倍x的值的函数,省略了返回值类型
fun multiplyByThree(x: Int) = x * 3

       

       
        kotlin可以给函数设定默认参数值,例如:

fun funOne(int:Int=100,str:String,double: Double=0.7){
   
    println("测试")
}

fun main(){
   
    funOne(str="hh")
}

        调用函数时,用这种参数名=参数值的方式传值,传入参数的顺序谁前谁后都无所谓,因为kotlin可以根据参数名将参数准确地匹配上。
       

       

1.6 条件语句if

        使用方法与C++和Java相同,示例如下:

fun main() {
   
	val n: Int = -11
	if (n > 0)
		println("正数")
	else if (n == 0)
		println("0")
	else
		println("负数")
}

        在函数中,当函数体为expression body时,通常可以用if表达式得到返回值,不需要写“return”关键字。(这一点与c++和java不同,它们的if语句是没有返回值的,而kotlin的if语句可以有返回值):

fun checkSign(number: Int): String =
        if (number > 0)
            "正数"		// 不需要写return
        else if (number == 0)
            "0"
        else 
        	"负数"

fun main() {
   
    println(checkSign(-19))  
}

       

       

1.7 条件语句when

        kotlin中的when语句功能类似于c++和java中的switch语句。根据姓名返回得分的函数如下:

fun getScore(name:String)=when(name){
   
    "tom"->90
    "lily"->92
    "jack"->85
    else->0
}

        when语句还有一种不带参数的写法,这种写法有时能发挥很强的扩展性。仍是上面这个例子,假设所有名字以tom开头的人得分都是90分,代码如下:

fun getScore(name:String)=when{
   
    name.startsWith("tom")->90
    name=="lily"->92
    name=="jack"->85
    else->0
}

       

       

1.8 字符串与$

       在字符串中,符号"$"后接变量名时,效果是在字符串中插入变量的值,示例如下:

fun main() {
   
	val answer = 42
	println("Found $answer!") // 输出 Found 42!,answer被替换成了它的值
	println("printing a $1")  // 输出printing a $1,因为1不是变量名,所以不会有特殊的操作
}

        在${ }中放入一个表达式时,这个表达式执行后得到的值就会转换成字符串,示例如下:

fun main() {
   
	val condition = true
	println("${
     if (condition) 'a' else 'b'}") // 表达式if (condition) 'a' else 'b'执行后得到'a',转换成字符串"a",并打印出来
}

       当想使用一些特殊字符时,可以用反斜杠\去掉其本身含义,例如:

fun main() {
   
	val str = "value"
	println("s = \"$str\".") // 反斜杠去掉了两个双引号的 特殊含义,最后输出s = "value".
	println("""s = "$s".""") // 也可使用三个双引号,最后输出s = "value".
}

       

       

1.9 循环语句while

        使用方法与C++和Java相同,示例如下:

var i = 0
while (i < 4) {
      // 输出....
	print(".") 
	i++
}

       

       

1.10 循环语句for与关键字in

        使用方法与C++和Java不同。
        kotlin在访问一个区间或容器中的内容时,使用关键字in。例如要循环打印区间[1,3]范围内的数:

for (i in 1..3) {
   
	println("$i")
}
// 输出:
// 1
// 2
// 3

       
        区间的表示方法有多种,除了能正向步进外,还能反向步进,也就是例如9~1这样由大到小的区间。此外,除了以1步进外,还能用step指定步进大小,示例如下:

fun main() {
   
	val range1 = 1..5 		 // 区间[1,5],1 2 3 4 5
	val range2 = 1 until 5   // 区间[1,9),用until定义的区间是左闭右开的,1 2 3 4
	val range3 = 5 downTo 1  // 反向步进,5 4 3 2 1
	val range4 = 0..9 step 2        // 区间[0,9],以2步进,0 2 4 6 8
	val range5 = 0 until 10 step 3  // 区间[0,10],以3步进,0 3 6 9
	val range6 = 9 downTo 2 step 3  // 反向步进,以3步进,9 6 3
	println(range1)			// 打印这个区间范围内的所有数
}

       
        此外,除了整数能表示成区间外,字符也能,示例如下:

fun main() {
   
	for (c in 'a'..'z') {
   
		print(c)
	}
}

       
        in关键字除了能和for语句一起使用外, 还能用于判断一个值是否属于某个区间,例如:

fun main() {
   
	val i &
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值