1.java其实是解释性语言,因为java通过javac编译后生成的.class文件,需要用ART虚拟机来解释才能被翻译成电脑识别的二进制文件
2.正因为第一点的原理,说以kt诞生了,kt编译器是将kotlin编译成.class文件,让ART虚拟机进行解释成二进制文件
3.kt拥有类型推导机制,kt抛弃了java的基本数据类型,全部使用对象数据类型,ef:
var a = 10 //变量a 被自动推导 出整型对象类型 Int
4.var 相当于声明变量,val相当于声明常量
5.基本语法规则:
fun 方法名(参数名:类型...):返回类型{
return 返回值
}
6.函数中如果只有一行代码,可不写函数体,直接=放在函数末尾;ef:
fun largerNum(a:Int, b:Int) : Int{
return max(a, b)
}
//可以写成————>
fun largerNum(a:Int, b:Int) : Int = max(a, b)
//由于kt出色的推导机制,max本来作为kt内置函数返回是Int类型,所以可以简化成
fun largerNum(a:Int, b:Int) = max(a, b)
7.条件语句
if语句可有返回值,返回值为每个条件语句的最后一行代码,ef:
fun largerNum(a:Int, b:Int) : Int{
val value =
if(a>b){
a
} else{
b
}
return value
}
//最终可压缩成为
fun largerNum(a:Int, b:Int) = if(a>b) a else b
when语句的一些特殊用法,例如凡以Tom开头的名字,他的分数就是86分
fun getScore(name:String) = when{
name.startsWith("Tom") -> 86 //这里是特殊用法,Tom开头的都为86分
name == "Jim" -> 77
name == "Jack" -> 95
name == "Lily" -> 100
else -> 0
}
8.区间的使用
..升序闭合
val range = 0..10//创建一个在闭合区间[0,10],0到10内的随机数
until升序非闭合
val range = 0 until 10//创建一个左闭右开的区间[0,10),0到9内的随机数
step设置元素跳跃
fun main(){
//遍历[0,10)这个区间,每次循环在区间内递增2,相当于for循环的i+2
for(i in 0 until 10 step 2){
println(i)
}
}
downTo设置降序
fun main(){
//创建了一个[10,1]的降序区间
for(i in 10 downTo 1){
println(i)
}
}