《第一行代码Android》kotlin总结之基础知识

最近在编码的过程中发现自己的android应用基础还是有点薄弱,利用这个国庆好好补充一下。我阅读的《第一行代码Android》是第三版,与第二版最大的区别是用kotlin来讲解的android知识,特别适合我这种kotlin 0基础的人。因为这本书的是穿插来讲解kotlin的,因此在这里用一篇文章来记录下自己的kotlin笔记的基础知识。

变量

kotlin中的变量和大多数语言不同,变量只有两种定义方法。var和val。
val是用于定义不可变的变量,像常量或String类型的变量,类似于java中的final和C语言中被const修饰过的变量。
var是用于定义可变的变量,定义之后变量可以被重新赋值。

 val a = 10
 var b = 10
 a = 20 //错误写法
 b = 20

为什么kotlin可以这么定义变量是因为kotlin有强大的类型自动推断功能。比如说

val a = 10

那么现在变量a的数据类型就是Int数据类型。
当然我们经常会延迟给变量赋值。那么这个时候我们在定义变量的时候,就可以指定变量数据类型。

var a : Int = 10

函数

普通函数,看到目前为止,我觉得函数没有什么需要特别记录的,看一眼函数的基本写法,基本都能明白了。如果后面有什么特别需要注意的东西,我再到这里补充。

fun functionName(a : Int, b : Int) : Int {
	return 0
}

补充:后面读书的时候,还是遇到了一些高级函数的用法,另写了一篇《第一行代码Android》kotlin总结之函数专题文章来学习

逻辑控制

kotlin中的逻辑控制和我见过的其他语言还是有比较大的变化的,但是也感觉蛮有意思的。

if 条件语句

if条件语句和其他语言没有任何区别,相信我自己也不会忘记,这里就不记录了。

when 条件语句

when的用法和switch case有点类似,但是kotlin中是加强版的,个人很喜欢这个东西。
when语言支持传入一个任意类型的参数,然后可以在when的结构体中定义一些列的条件。大概使用方法如下:

匹配值 -> {执行逻辑} //如果执行逻辑只有一行,{}可以省略
return when (name) {
"master" -> 1
"li" -> 2
else -> 3
}

这样子的代码看起来舒服了好多,太治愈代码强迫症患者了。而且还避免了swtich的忘记写break的问题。
仅仅到这里就完了吗?不,前面说过了是加强版,还可以做类型匹配

when (num) {
 is Int -> xxx
 is Doubel -> xxx
 else -> xxx
}

循环

kotlin中的循环有for和while,while循环和其他语言没有多大差别,暂时不记录了。遇到了再补充
for循环有没有多大差别,只是有一些我没见过的特殊的用法,在这里记录一下。

打印0~10

fun printNum0To10() {
	for (i in 0..10) {
		println(i)
	}
}

打印结果为0,1,2,3,4,5,6,7,8, 9,10

打印0~10,但是不包含10

fun printNum0To10() {
	for (i in 0 until 10) {
		println(i)
	}
}

打印结果为0,1,2,3,4,5,6,7,8,9

打印0~10之间的数值,步进值为2

fun printNum0To10() {
	for (i in 0 until 10 step 2) {
		println(i)
	}
}

打印结果为0,2,4,6,8

降序打印0~10

fun printNum0To10() {
	for (i in 10 downTo 1) {
		println(i)
	}
}

打印结果为10,9, 8, 7,6,5,4,3, 2,1

其他小知识

区间 val range = 0…10

这样的写法表示的是[0,10].(如果看到我的这个写法,有点不明白,要复习下高中数学啦,哈哈)

面向对象编程

对于新建一个对象,我觉得不用特别记录了,后面如果遇到特殊的,我再补充。主要是记录一下与其他语言有差异的点

继承

kotlin中任何一个非抽象类默认都是不可以被继承的,相当于java中给类前面声明了final关键字。如果允许类被继承需要在类前面加open关键字

//父类
open class Person {
	//xxx
}

//子类
class Students() : Person() {
	//xxx
}

构造函数

自我感觉第一行代码这本书中,这一块讲的有点啰嗦了。没必要费大文笔了讲次构造函数,个人理解,次构造函数就是对主构造函数的一个补充

class Students(val sno : String, val grade : Int) : Person() {
	//如果需要在构造函数中编写一点逻辑,kotlin提供了一个init函数
	init {
		///xxx
	}
}

可见性修饰词

修饰词这一块和java中差异较小,这边仅仅记录一下有差异的点。

  • protected:java中比kotlin中多了一个同一包路径下的类可见
  • default:kotlin中无支持(同一包路径下的类可见)
  • internal:java中无支持(同一模块中的类可见)

关键字

你可能感兴趣的:(读书笔记,编程语言,android,kotlin,开发语言)