Kotlin语言(1)-BasicThing
checkNumber是Kotlin内置的一个抽象类,像Int、Long、Float、Double等与数字有关的类都是它的子类,所以这里就可以使用类型匹配来判断传入的参数到底属于什么类型,如果是Int或者Double类,就将该类型打印出来,否则就打印不支持该参数的类型,这是对于重写的checkNumber函数来说的。默认情况下,for-in循环每次执行循环时会在区间范围内递增1,相当于Java f
开发工具
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
函数
语法规则:
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循环
更多推荐
所有评论(0)