测试小站: 处理网 回收帮 培训网 富贵论坛 老富贵论坛

Kotlin的基础语法(一) | E5

  上节课我们讲了如何编写一个最简单的APP,并且我们已经运行在真机上看到了效果。这节课我们要学习Kotlin语言的基础语法部分,考虑到我们文章的目标读者都是初学者,可能对Kotlin语言不是很熟悉,如果你之前有过其他语言,亦或是Java语言的基础,那么你学Kotlin会很快,一个有编程语言基础的开发者,1-2周就可以上手开发程序了。如果你是初学者可能要根据你具体的情况而定,时间就不一定了。所以我们要多加练习,孰能生巧。

  kotlinlang/docs/basic-syntax.htm

  提示:本来打算加一个链接自动跳转,但是Kotlin官网没有在国内备案,所以加不进来,大家自行跳转访问吧。

  上面的网址就是Kotlin官网对基础语法部分的叙述,既然我们要学Kotlin,就一定要去它的源头去学,这样学起来才会便捷和快速。因为Kotlin官网都是英文版的,所以大家学起来可能会很吃力。我的英语水平也有限,我就抛砖引玉,初步的翻译一下,如果大家有不明白的可以去官网读原文。

  如果你想单独上机实操Kotlin,那你可能要去官网下载Kotlin的运行环境,配置好了开发环境之后就可以写代码了。但是我们这里主要是讲Android开发,所以我可能不会配置这个环境,如果想练习可以在AS里面实操,后面我们会大量使用Kotlin语言去开发功能。如果你需要配置这个环境,就按下面的链接去做,如果不需要就不用管了。

  //使用IDE开发Kotlin程序

  kotlinlang/docs/getting-started.html#create-your-powerful-application-with-kotlin

  //使用命令行开发Kotlin程序

  kotlinlang/docs/command-line.html#install-the-compiler

  OK,我们进入正题。

  包的定义和导入

  package my.demo

  import kotlin.text.*

  这个包的定义和导入我在上节课已经初步地讲解过了,这里我补充一下,Kotlin里的package定义和Java的不一样,Java的要求包名和目录必须一致,否则就会报错。而Kotlin对目录结构没有要求,任意放置。虽然Kotlin对文件位置没有要求,但你自己要管理好这个文件的位置,保证自己知道它们的对应关系。我比较推荐包名和目录名一致,这样对初学者比较友好,所见即所得。

  程序入口

  每个程序都会有一个程序入口点,这个程序入口点就是一个程序的大门,想要运行这个程序,必须经过这个大门,我们经常叫它main函数或main方法。Kotlin的程序入口方法是这样的:

  fun main() {

  println("Hello world!")

  }

  这里的fun关键字我上节课已经解释过了,是定义方法的关键字,println方法就是让系统打印“Hello world!”这句话,如果你是使用命令行启动的Kotlin,那么就会在命令行里面显示这句话。

  标准输出

  print("Hello ")

  print("world!")

  //输出:Hello world!

  println("Hello world!")

  //输出:Hello world!

  如果我们想打印一些信息到显示器,就可以使用print方法,自己找找print和println有什么不一样?

  我们将来写Android程序的时候,print和println方法用得很少,我们转而会用日志去替代,这样会方便我们查看日志的输出,这个以后我们再讲。

  方法

  fun sum(a: Int, b: Int): Int {

  return a + b

  }

  我们看到方法是用fun关键字定义的,sum是方法的名词,“()”内是方法的参数列表,a表示变量名称,Int是a变量的类型,中间“:”是用于区分变量名称和变量类型的。以此类推,后面的b变量与a变量的定义方式是一致的。在“()”后面的Int是方法的返回值类型,中间的“:”是用于区分方法头部和返回类型的。后面的“{ }”表示方法的作用域,或者叫方法体。作用域的意思就是属于这个方法的区域,在这个区域内的代码都属于这个方法。return的意思是经过一系列计算,我们要把计算的结果返回给调用方,这里就用return去返回。

  fun sum(a: Int, b: Int)=a + b

  在Kotlin里面也可以把方法当做表达式使用,上面代码的意思是sum方法会计算a+b的值,并返回给调用方。

  fun printSum(a: Int, b: Int): Unit {

  println("sum of $a and $b is ${a + b}")

  }

  //省略Unit

  fun printSum(a: Int, b: Int) {

  println("sum of $a and $b is ${a + b}")

  }

  有时候我们调用方法并不需要返回值,这时就用Unit去显示的声明该方法不需要返回值。不过我们常用的方式是省略掉Unit,这样可以减少我们不必要的编码工作,大家知道这个原理就可以了。

  变量

  val a: Int=1

  val b=2 //类型推断

  val c: Int //当我们不需要初始化值的时候,需要提前给定变量类型

  c=3 //延迟赋值

  var x=5 //类型推断

  x +=1

  Kotlin的变量分为两种,val关键字声明的变量只能赋值一次,也就是说类似常量。而var关键字声明的变量可以多次赋值,这里类似普通的变量。

  类和实例

  class Shape

  Kotlin里面定义类特别简单,直接就是class关键字+类名。类我在上节课已经做了描述,如果有不懂的可以翻看上节课,或者去访问这个链接类-编程术语,有不明白的可以在下面评论区留言。

  class Rectangle(var height: Double, var length: Double) {

  var perimeter=(height + length) * 2

  }

  当然了,类也是可以传参数的,类似方法的参数列表,不过这里的方法我们称为构造函数。是指用于创建该类时所必要的参数。

  open class Shape

  class Rectangle(var height: Double, var length: Double): Shape() {

  var perimeter=(height + length) * 2

  }

  类也可以继承,继承大家可以理解成子承父业。子类会把父类的所有公开的特性都继承下来,包括属性和方法。Kotlin默认定义的类是final修饰的,final是Java语言的关键字,大家可以查看这个链接Final-Java关键字,做了解。关于继承的概念,大家可以查看这个链接继承-面向对象。

  注释

  // This is an end-of-line comment

  /* This is a block comment

  on multiple lines. */

  在写代码的时候,避免不了要对关键代码做注释,以免日后时间一长,就忘记代码具体是做什么用的了。

  Kotlin的注释分为行注释和块注释,非常简单。

  字符串模板

  var a=1

  // simple name in template:

  val s1="a is $a"

  a=2

  // arbitrary expression in template:

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

  我们在拼接字符串的时候,经常需要对变量的值进行拼接,Kotlin提供了非常方便的字符串模板,用法是“$变量名”,去引用变量的值。也可以用“${表达式}”来调用内置的函数。

  好了,我们Kotlin基础语法课程因为内容比较多,我打算分两期来讲,下一课我们讲下半部分。相信你如果把整个课程学完,你的Kotlin基础知识就齐备了,我们开发Android程序就有了一个坚实的基础,等后续遇到更难的问题,我们再继续讲Kotlin高级部分的用法。

  还是老规矩,如果大家有什么问题,可以在评论区留言,我会认真解答。

posted @ 2021-12-16 21:12  linjingyg  阅读(135)  评论(0)    收藏  举报