开发工具

Kotlin和JAVA师出同源,所以我们是可以使用IDEA去开发的。当然了,也可以使用Visual Studio code 或者使用Android Studio去开发。
相关的新建方法,自行搜索。

基本类型

变量

  val(value的简写)用来声明一个可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的非final变量。
  var(variable的简写)用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应Java中的非final变量。

!!!Koliton每一行代码的结尾是不用加分号的。

Kotlin的推导机制:使用val定义了一个变量后再赋值某个值,该变量会根据你赋给变量的那个值的类型进行推导,得出该变量的数据类型。
需要注意的是,我们对一个变量延迟赋值的话,Kotlin就无法自动推导它的数据类型了。这个时候需要显式声明变量类型才可以。
val a: Int = 10
就是显式定义了就不会去推导了。

Java和Kotlin同根同源,他们的数据类型对照
图1
            图1

函数

语法规则:
	import kotlin.math.max  //这个编译器可以自动补全
	fun methodName(param1: Int,param2: Int): Int{
		return max(param1 , param2)
	}
/*
以上函数可以等于下面这个函数,当然了,这种只适用于只有一行的方法体
	fun methodName(param1: Int,param2: Int): Int = max(param1,param2)
	进一步简化可以得到
	fun methodName(param1: Int,param2: Int) = max(param1,param2)
*/
	fun main()
	{
	val a = 37
	val b = 40
	val value = methodName(a,b)
	println("largerNumber is " + value)
}

逻辑控制

if条件语句

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

//Kotlin语言最重要的就是安全和简单
fun largerNumber(num1: Int,num2: Int):Int{
	val value = if(num1 > num2){
		num1
	}else{
		num2
	}
	return value
}

fun largerNumber(num1: Int,num2: Int): Int{
	return if(num1 > num2){
		num1
	}else{
		num2
	}
}

fun largerNumber(num1: Int,num2: Int) = if(num1 > num2){
	num1
}else{
	num2
}

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

when条件语句

//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
}

//when语句
fun getSore(name: String) = when(name){
	"Tom" -> 86
	"Jim" -> 77
	"Jack" -> 95
	"Lily" -> 100
	else -> 0
}
//when语句非常像Java中的switch语句

  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 相对于Java中的instanceof关键字

  checkNumber是Kotlin内置的一个抽象类,像Int、Long、Float、Double等与数字有关的类都是它的子类,所以这里就可以使用类型匹配来判断传入的参数到底属于什么类型,如果是Int或者Double类,就将该类型打印出来,否则就打印不支持该参数的类型,这是对于重写的checkNumber函数来说的。

when的不带参数的用法,不常用,但有的时候却能发挥很强的扩展性

//第一种
fun getSore(name: String) = when{
	name == "Tom" -> 86
	name == "Jim" -> 77
	name == "Jack" -> 95
	name == "Lily" -> 100
	else -> 0
}

//第二种
//不论传入的名字是Tom还是Tommy,只要是以Tom开头的名字,它的分数都为86分
fun getSore(name: String) = when{
	name.startsWith("Tom") -> 86
	name == "Jim" -> 77
	name == "Jack" -> 95
	name == "Lily" -> 100
	else -> 0
}

循环语句

val range = 0..10
//0..10 等于[0,10]这个区间

for-in循环:

fun main(){
	for(i in 0..10){
	println(i)
	}
}
val range = 0 until 10
//0 until 10 等于[0,10),左闭右开

为啥没有左开右闭?因为没有必要,左开就是舍弃左边的数,那直接将后一位数闭不就好了。

默认情况下,for-in循环每次执行循环时会在区间范围内递增1,相当于Java for-i 循环中的i++效果,而如果你想跳过其中的一些元素,可以使用step关键字,就是设置步长。

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

//相当于i += 2的效果

降序的区间,可以使用downTo关键字,用法如下:

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

//[10,1]的降序区间

Kotlin的循环用法跟Java的用法其实大差不差,for循环和while循环

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐