Day 2:Kotlin 程序设计基础入门 (1)

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 UdemyYoutube 频道。另外,想追踪更多相关技术资讯,欢迎到 脸书粉丝专页 按赞追踪喔~

今天要跟大家介绍 Kotlin 语法的内容大纲:

  • 练习 Kotlin 基础语法的软件
  • 第一行程序码 Hello World
  • 常数与变数
  • 单行注解 & 多行注解方式
  • 资料类型宣告方式
  • 基本资料型态:整数、浮点数
  • 基本资料型态:字串
  • 基本资料型态:布林值
  • 常用的运算符号介绍

练习 Kotlin 基础语法的软件

在进入 Kotlin 梦幻语法糖世界里,这里 KT 先提供三种可以练习 Kotlin 基础语法的软件:

Kotlin Playground

https://play.kotlinlang.org

Koltin 官方目前提供,免安装任何软件,可以随时随地,直接在线上练习 Kotlin 的基础语法。相当的方便且不受电脑效能配置而影响编译执行速度。

IntelliJ IDEA

https://www.jetbrains.com/idea/download

IntelliJ IDEA ,目前分为两种版本 Ultimate 和 Community。我们选择下载安装 Community 版本,Community 版本是免费的喔。用这一个版本学习、练习 kotlin 基础语法就相当够用了喔,不用额外花费购买 Ultimate 的版本(一年授权费499元美金,约台币15,000元)。

Android Studio

https://developer.android.com/studio

Android Studio 整体介面与操作是基於 IntelliJ IDEA,两套相当类似,只有少部分差异。Android Studio 为 Google 官方提供开发 Android 应用程序的整合式开发环境 (IDE: Integrated Development Environment)。

目前「口罩地图」专案,是透过 Android Studio 进行开发。各种作业系统 (Windows、Mac、Linux、Chrome) 安装方式,可以参考, 官方影片详细教学介绍:https://developer.android.com/studio/install

第一行程序码 Hello World

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

main 函数,是一切的开始,程序运行起来最初的进入点,一个 Kotlin 档案,只能有一个 main 函数。重复宣告,会被编译器,提示程序冲突,重复宣告语法错误。

我们第一行要学的程序码,即是透过 println 函数语法,在输出资讯区印出小括号内的资料 Hello World 。其中双引号 " " 前、後包覆的文字,会被视字串资料。

输出结果

Hello, world!!!

所以,如果我们试着改写其中双引号 " " 里面的资料,为"HKT线上教室",则会印出该文字:

println("HKT线上教室")

输出结果

HKT线上教室

补充

在 kotlin 1.3 之前的版本,在 main 的小括号内,需要定义参数,如:

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

但 args 这个参数往往到最後都没有使用到,所以到了新版 kotlin 1.3 之後版本就不用带任何参数,但之前的版本需要。

常数与变数

val (value,常数): 固定值,不希望事後变动此资料,可以使用此种型态。
var (variable,变数): 变动值,可以随时动态存进去资料值。

常数

宣告一个常数名字为 x 的盒子,并且将整数资料 1,存到 x 这个盒子里面去。

val x = 1

val 只能定义一次资料值,我们刻意去犯错,重复去塞资料到 x 常数值里面去,IntelliJ IDEA 就会很聪明的智慧提示,在第二次定义的 x ,下方画上红色蚯蚓线,滑鼠鼠标,移动到红色蚯蚓线下方, IntelliJ IDEA 就会跑出,错误原因来说明:「val cannot be reassigned」,就是 val 型态不能重复塞值。

若这时我们假装刻意没看到,坚持要执行(Run main.kt),展开左侧 Project 专案面板,右键点击 main.kt 档案,在选单中选择 「Run ‘MainKT’」,执行後的结果也会在资讯视窗中显示错误讯息,此讯息会指出是哪一个档案、哪一行发生错误。

你会发现 IntelliJ IDEA 很聪明,不用执行後才跟你说错误,在写错的当下,就会把有错误的档案与行数用红色蚯蚓线,标明错误。

我们修正,移除重复宣告的错误程序,使用 print 函数语法,列印出 x 常数资料。

fun main(args: Array<String>) {
    val x = 1

    println(x)
}

这时执行(Run main.kt),我们就可以在输出资讯视窗中,看到列印出 x 盒子里面的资料。

变数

宣告一个变数名字为 y 的盒子,并且将整数资料 1,存到 y 这个盒子里面去。

var y = 1

此时,若我们取出 y 值会得到 1。

var 可以重复塞值进去,我们再将整数资料 2,存到 y 这个盒子里面。

var y = 1
y = 2

println(y)

这时我们取出 y 盒子里面的资料,注意喔! 这时 y 盒子里面的资料不是 1,而是已经被我们第二次存进去的资料给覆盖掉。所以印出 y 值为 2 喔。

注解

注解,是辅助程序开发者,在维护程序时,可以快速了解该行或该区块是在做什麽运算,就好像贴一个便利贴,在程序码中,来提醒未来的自己或他人说明解释程序码的功用。另外当程序被注解掉时,编译器不会把它当程序码去进行编译与执行。

KT 建议程序码要有良好的注解,在未来维护上会发挥很大的效用。当然很多学生反应,自己一定记得,当初写过什麽,为什麽要那样写,但实际上可能一个礼拜左右或是两个礼拜以上,再回来看当初写的程序码,就要花很长一段时间,去研究才能弄懂这段和那段在写什麽,KT 贴心建议,与其当下注解说明解释程序码用途,才不会事後要很多倍的时间去追 code 回忆了解。

单行注解&多行注解

注解快速键

Android Studio 常用快速键,可以参考这篇:
https://tw-hkt.blogspot.com/2018/12/kotlin-android-studio.html

资料类型宣告

方法一:

定义资料类型,可以明确的宣告资料为何种资料型态:

var a: Int = 1

方法二:

也可以不宣告任何资料型态,直接存资料到常数或变数当中,让 kotlin 自动去推断资料类型:

var b = 1

若资料已经设定为特定资料型态,若再以其他资料类型存入,将会造成编译或执行上的错误。

基本资料型态:整数、浮点数

基本资料型态:字串

字串模板

字串模板,样式一

字串模板,以 $ 为开头,後接「变量名称」,范例:$name

var name = "HKT"

println("从零开始学Kotlin程序设计,讲师:$name")

输出结果

从零开始学Kotlin程序设计,讲师:HKT

字串模板,样式二

另外一种,字串模板,以 $ 为开头,後接大括号,在大括号内,呼叫函数後得到的回传值,范例:${sayHello()}

fun main(args: Array<String>) {
    println("${sayHello()} 欢迎大家!")
}

fun sayHello(): String {
    return "哈罗~"
}

输出结果

哈罗~ 欢迎大家!

目前,大概知道字串可以透过 「$」 当作字串模板,来串接文字即可。之後会在细讲讨论函数这个部分,

基本资料型态:布林值

指派运算符号 : =

将数字 1 资料,指派存到 a 里面去

var a = 1 

数学运算符号 : + , - , * , /

//加法
var a = 1 + 1

//减法
var b = 10 - 5

//乘法
var c = 5 * 2

//除法
var d = 10 / 2

复合指派运算符号 : += , -+ , *= , /=

//初始化变数值
var a = 0
var b = 0
var c = 0
var d = 0


//a = a + 1 ,可使用复合指派运算符号,简写为:
a += 1 

//b = b -1 ,可使用复合指派运算符号,简写为:
b -= 10

//c = c * 5 ,可使用复合指派运算符号,简写为:
c *= 5

//d = d / 2 ,可使用复合指派运算符号,简写为:
d /= 2

比较运算符号: == ,!= , > , < , >= , <=

var a = 10
var b = 5

//等於 ==
if(a == b) println("a 等於 b") else println("a 不等於 b")

//不等於
if(a != b) println("a 等於 b") else println("a 不等於 b")

//大於
if(a > b) println("a 大於 b")

//小於
if(a < b) println("a 小於 b")

//大於等於
if(a >= b) println("a 大於等於 b")

//小於等於
if(a <= b) println("a 小於等於 b")

逻辑运算符号: ! , && , ||

var a = false
var b = true

//逻辑非,Not
if (!a) println("a 为 false") else println("a 为 true")


//逻辑且,And
if(a && b) println("a与b条件皆成立") else println("a或b其中一个条件不成立") 

//逻辑或,Or
if(a || b) println("a或b其中一个条件成立") else println("a和b条件皆不成立")

参考资料

HKT 线上教室
https://tw-hkt.blogspot.com/

Freepik
https://www.freepik.com/

Android Developers - Keyboard shortcuts
https://developer.android.com/studio/intro/keyboard-shortcuts

Kotlin docs
https://kotlinlang.org/docs/home.html


那今天【iThome 铁人赛】就介绍到这边罗~

顺带一提,KT 线上教室,脸书粉丝团,会不定期发布相关资讯,不想错过最新资讯,不要忘记来按赞,追踪喔!也欢迎大家将这篇文章分享给更多人喔。

我们明天再见罗!!!掰掰~


<<:  Day 02 注册 Azure 帐号与套件安装- 免费体验30天

>>:  选择具有 GPU 的 EC2 并完成配置-Day 02

#2 JavaScript Crash Course 1

今天来教教 JavaScript 的基础语法:注解、变数、常数、回圈、条件、函式 以及 运算。 目的...

Day17 决策树实作

https://github.com/PacktPublishing/Machine-Learni...

3. 用vscode的live server打造方便的开发环境

什麽是live server? 如果有看我之前的文章就会知道它是一个vscode的插件,可以即时预览...

让API 返回 Kafka- producer.send 事件 use Promise

这边使用的是nodejs(egg) 一张图简介一下 ELK+kafka做什麽用 (用於数据分析,lo...

[DAY-09] 放宽更多限控制 决策不必上级核准

难道拉屎 也要跟我说!!! 不不讨公司 尽力去做对公司好的事!! 对自己负责! 对自己的 员工要做...