学习《第一行代码第3版》重点知识点 第二章 走向Kotlin 上篇

1、编程之本:变量和函数

 编程语言基本上共有的特性就是变量和函数

 1.1 变量

    Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var

    val(value的简写)声明一个不可变变量,初始赋值后不能重新赋值,对应java中的final变量

    var(variable的简写)声明一个可变变量,初始赋值后可以重新赋值,,对应java中的非final变量

    注意Kotlin每一行代码的结尾是不用加分号的

      Kotlin完全抛弃了Java中的基本数据类型,全部使用了对象数据类型。在Java中int是整型变量的关键字,而在Kotlin中Int变成了一个类,它拥有自己的方法和继承结构。

 语法所示: val b:Int=100

    

   什么时候用这两个变量呢,永远优先使用val来声明一个变量,当val无法满足需求时再使用var.这样设计出来的程序会更加健壮,也更加符合高质量的编码规范。

 1.2  函数

      定义一个函数的语法规则如下  :

fun name(num1: Int, num2: Int): Int {
    return max(num1, num2)

}

  fun(function的简写)是定义函数的关键字,无论你定义什么函数,都一定要使用fun来声明

  fun后面的是函数名(name)

  函数名后面的一对括号中,可以声明该函数接收什么参数

 括号后面的部分是可选的,用于声明该函数会返回什么类型的数据。如果不需要返回任何数据,这部分可以不写

 两个大括号之间的内容就是函数体了,可以在这里编写函数的具体逻辑。

当一个函数的函数体中只有一行代码时,可以使用单行代码函数的语法糖:和上面的效果一样

fun name(num1:Int,num2: Int)= max(num1,num2)

使用这种写法,可以直接将唯一的一行代码写在函数定义的尾部,中间用等号连接即可

2、程序的逻辑控制

2.1 if条件语句

   举例,通过if取最大值:

fun name(num1:Int,num2: Int):Int{
     var value=0
     if (num1>num2){
          value=num1
     }else{
          value=num2
     }
     return value
}

看起来代码有点多,之前学了Kotlin的语法糖,那么简化下吧:

fun name(num1:Int,num2: Int)= if (num1>num2) num1 else num2

是不是很惊讶,一行搞定,所以语法糖很重要

2.2 when条件语句

Kotlin中的when有点类似于java中的switch,但是比switch强大的多,而且有时候比if语句还要简单好用。举例,查询学生考试成绩:

用if写:

如果判断条件非常多,是不是感觉代码很冗(rong,三声)余,这个时候可以用when:

when格式:匹配值  -> {执行逻辑}         一行代码的时候,{}可以省去

是不是感觉代码瞬间少了很多,看起来更高大尚简洁了。

when语句允许进行类型匹配,如下:

is 关键字就是类型匹配的核心,相当于java中的instanceof关键字。

如果要查询以A开头的成绩,可以通过以下来查:

2.3 循环语句

Kotlin中循环用 for-in,首先说下区间,例:

val range=0..10       .. 是创建两端闭区间的关键字,在 .. 的两边指定区间的左右端点就可以创建一个区间了:

在很多情况下,双端闭区间不如单区间好用,例如,数组的下标都是从0开始的,一个长度为10的数组,下标区间范围是0到9,所以用左闭右开更加常用,Kotlin用可以使用 until 关键字来创建,例:   

val range= 0 until 10         

每次执行循环递增加1,如果想跳过其中的一些元素,可以使用 step 关键字,例:

表示每次执行循环加2

注意   ..和until关键字都要求左端必须小于等于右端,是一个升序的区间,如果要降序可以使用  downTo 关键字,例

2.4  面向对象编程

    有很多人简历上第一条写着 熟练Java面向对象编程思想,但是让你一说的时候就说的东一句西一句了,这里借用郭霖大神的话。

不同于面向过程的语言(比如C语言),面向对象的语言是可以创建类的。类就是对事物的一种封装,比如说人、汽车、房子、书屋等任何事物,我们都可以将它封装一个类, 类名通常是名词。而类中又可以拥有自己的字段和函数,字段表示该类所拥有的属性,比如说人可以有姓名和年龄,汽车可以有品牌和价格,这些就属于类中的字段,字段名通常也是名词。而函数则表示该类可以有哪些行为,比如说人可以吃饭和睡觉,汽车可以驾驶和保养等,函数名通常是动词。

通过这种类的封装,我们就可以在适当的时候创建该类的对象,然后调用对象中的字段和函数来满足实际编程的需求,这就是面向对象编程最基本的思想。当然,面向对象编程还有很多其他特性,如继承、多态等,但是这些特性都是建立在基本的思想之上的,理解了基本思想之后,其他的特性我们可以在后面慢慢学习。

2.4.1    继承与构造函数

现在我们开始学习面向对象编程中另一个极其重要的特性一 继承。 继承也是基于现实场景总结出来的一个概念,其实非常好理解。比如现在我们要定义一个Student类,每个学生都有自己的学号和年级,因此我们可以在Student类中加人sno和grade字段。但同时学生也是人呀,学生也会有姓名和年龄,也需要吃饭,如果我们在Student类中重复定义name、age字段和eat()函数的话就显得太过冗余了。这个时候就可以让Student类去继承Person类,这样Student就自动拥有了Person中的字段和函数,另外还可以定义自己独有的字段和函数。这就是面向对象编程中继承的思想。

在Kotlin中,让一个类可以被继承,在类的前面加上 open 关键字就可以了,例:

要让另一个类继承这个Person类,在java中继承用extends,Kotlin中则变成了一个冒号,例:

为什么Person类的后面要加一个括号,java中继承的时候不需要啊,这个就涉及到主构造函数、次构造函数了。

Kotlin将构造函数分为主构造函数、次构造函数。

主构造函数的特点是没有函数体,直接定义在类名的后面即可,例:

次构造函数基本上是用不到的,Kotlin提供了一个给函数设定参数默认值的功能,基本上可以替代构造函数的作用。

 
 
 
发布了5 篇原创文章 · 获赞 6 · 访问量 527

猜你喜欢

转载自blog.csdn.net/qq_40533422/article/details/105323095
今日推荐