快速入门Kotlin

Kotlin简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何运行Kotlin代码

   

三种运行方法

  1. 使用IntelliJ IDEA。
    这是JetBrains的旗舰IDE开发工具,对Kotlin支持得非常好。在IntelliJ IDEA里直接创建-一个Kotlin项目,就可以独立运行Kotlin 代码了。缺点是还要再下载安装-一个IDE工具,有点麻烦,因此这里我们就不使用这种方法了。
  2. 第二种方法是在线运行Kotlin代码。
    为了方便开发者快速体验Kotlin编程, JetBrains 专门提供了一个可以在线运行Kotlin 代码的网站,地址是: htps://try.kotlinlang.org。缺点国内网路慢,也不使用。
  3. 第三种方法是使用Android Studio。
    遗憾的是, Android Studio作为一个专门用 于开发Android
    应用程序的工具,只能创建Android项目,不能创建Kotlin项目。但是没有关系,我们可以随便
    打开一个Android项目,在里面编写一个Kotlin 的main()函数,就可以独立运行Kotlin代码了。

在AS中运行kotlin文件

创建kotlin文件

HelloWorld—app—scr—main—java—comexample.helloworld右键New—Kotlin File/Class—输入选择下图
在这里插入图片描述

编写main函数

在这里插入图片描述
shift+F10
在这里插入图片描述

编程之本:变量与函数

变量

  • val(value)

用来声明一个不可变的变量,在初始值赋值后就再也不能重新赋值,对应java中的final变量。

  • var(variable)

用来声明一个可变的变量,在初始赋值之后仍然可以再被重新赋值,对应Java中的非final变量。
Kotlin拥有出色的类型推导机制
在这里插入图片描述

但是Kotlin的类型推导机制并不总是可以正常工作的,比如说如果我们对一个变量延迟赋值的话,Kotin就无法自动推导它的类型了。这时候就需要显式地声明变量类型才行,Kotlin
提供了对这一功能的支持,语法如下所示:

val a: Int = 10

可以看到,我们显式地声明了变量a为Int类型,此时Kotlin 就不会再尝试进行类型推导了。如果现在你尝试将一个字符串赋值给a,那么编译器就会抛出类型不匹配的异常。
Java中intKotlin中Int*
Kotlin 完全抛弃了Java中的基本数据类型,全部使用了对象数据类型。
在Java中int是关键字
在Kotlin中Int是一个类,它拥有自己的方法和继承结构在这里插入图片描述

例题,a*10在这里插入图片描述

使用val和var的时机
永远优先使用val来声明一个变量,当val没有办法满足你的需求时再使用var。这样设计出来
的程序会更加健壮,也更加符合高质量的编码规范。

函数

函数是用来运行代码的载体
是程序的入口函数,程序一旦运行,就是从main()函数开始执行的。
函数语法规则:

fun methodName (paraml: Int, pa ram2:Int): Int{
   
return 0
}

fun(function)定义函数的关键字,无论定义什么函数都要fun来声明。

fun(关键字) 函数名(参数名:参数类型, 参数名:参数类型):函数返回类型{
   函数体
return 0
}

不想接受任何参数,不需要返回任何数据就写一对空括号就可以。
返回类型如不需要可以不写。

  • 定义了一个名叫largerNumber()的函数,作用是接收两个整形参数,总是返回两个参数中最大的那个数。(largerNumber()只是对max()做了一个封装)*
fun largerNumber(numl: Int, num2: Int): Int {
   
	return max (numl, num2)
}

在这里插入图片描述
在这里插入图片描述

import kotlin.math.max
AS拥有非常智能的代码提示和补全功能。

  • 尝试调用该函数时间简单的功能。
fun main() {
   
    val a = 37
    val b = 40
    val value = largerNumber(a, b)
    println("larger number is " + value)
}
fun largerNumber(num1: Int, num2: Int): Int {
   
    return max(num1, num2)
}

在这里插入图片描述

运行过程

  • 定义a,b两个变量。a=37,b=40,然后调用largerNumber()函数,并将a、b作为参数传入。
  • largerNumber()函数会返回最大的那个数,然后打印出来。

Kotlin语法糖 *

当函数中只有一行代码时Kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数定义的尾部,中间等号连接。
例如上题就可以简化成

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

这种语法节省了return关键字,等号足以表达返回值的意思。

由于max()函数返回的是一个Int值,而在largerNumber()函数的尾部又使用等号连接了max()函数,因此Kotlin可以推导出largerNumber()函数返回的必然也是一个Int值,也不用再显式地声明返回值类型了。如下

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

语法糖可以结合Kotlin的其他语言特性一起使用,对简化代码方面帮助很大。

程序的逻辑控制

程序的执行语句主要分为三种

  • 顺序语句
  • 条件语句
  • 循环语句

1.if条件语句

  • 不借助Kotlin中max()函数实现,用if
fun largerNumber (numl: Int, num2: Int): Int {
   
	var value = 0
	if (numl > num2) {
   
		value = numl
	} else {
   
		value = num2
	}
	return value
}

kotlin中的if有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。

  • 用返回值简写
`fun largerNumber (numl: Int, num2: Int): Int {
   
	val value = if (numl > num2) {
   
		numl
	} else {
   
		num2
	}
	return value
}

在这里插入图片描述

fun largerNumber (numl: Int, num2: Int): Int {
   
	return if (numl > num2) {
   
		numl
	} else {
   
		num2
	}
}
  • 语法糖精简代码
fun largerNumber (numl: Int, num2: Int) = if (numl > num2) numl else num2

2.when条件语句

有点类似于java中的switch,但远比switch语句强大的多。

  • 编写一个查询考试成绩的功能,输入一个学生的姓名,返回该学生考试的分数。(if)
fun getScore(name:String) = if (name == 'Tom'){
   
	86
}else if(name == 'Jim'){
   
	77
}else if(name == 'Jack'){
   
	95
}else if(name == 'Lily'){
   
	100
}else {
   
	0
}

运行过程

  • 定义一个getScore()函数,这个函数接受一个学生姓名参数,然后通过if判断找到该学生的分数并返回。(使用了很常用的kotlin语法糖)
  • when
fun getScore(name:String) = when(name){
   
	"Tom" -> 86
	"Jim" ->77
	"Jack" ->95
	"Lily" ->100
	else -> 0
}

函数体直接=,用了语法糖

when格式:
匹配值 -> { 执行逻辑 }
当你的执行逻辑只有一行代码时,{}可以省略。
精确匹配之外,when语句还允许类型匹配

fun checkNumber(num:Number){
   
	when (num){
   
		is Int -> println("number is Int")
		is Double -> println("number is Double")
		else -> println("number not support")
	}
}

is——类型匹配的核心

由于checkNumber()函数接受一个Number类型的参数(kotlin内置的一个抽象类),像Int、Long、Float、Double等与数字相关的类都是它的子类。

  • 尝试在main()函数中调用checkNumber()函数
fun main(){
   
	val num = 10
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值