一起学Kotlin(1)

从google扶正Kotlin为Android开发的第一语言后,越来越多的项目开始使用Kotlin。虽然Kotlin与Java在某些地方存在一些相似的语法,而且AndroidStudio支持将Java转化为Kotlin的操作。但其实Kotlin也有其独特的语法和一些细节,补充基础语法和细节就显得尤为必要,否则在真正的项目中有的是不会用或者看不懂的。那么就开始这一系列基础的学习吧!
1、声明变量

var maxNum:Int = 10

对应顺序:变量定义关键字 变量名:变量类型 = 值
Kotlin的数据类型全为引用类型,在编译的时候编译器会将对应的引用类型转化为基本类型
String、Char、Boolean、Int、Double、List、Set、Map
2、只读变量与可变变量
要声明可修改变量,使用var关键字
要声明只读变量,使用val关键字

var maxNum:Int = 10
//var 变量   val 不可变量,只读变量
val age = 20
//maxNum为可变变量,可以进行修改
maxNum = 11
//age为只读变量,不允许修改,此句编译不通过
age = 21

3、类型推断
对于已声明并赋值的变量,它允许你省略类型定义

//该句name变量的类型被自动推断为String
var name = "Jack"
//如果进行下面的赋值操作,编译器会提示不能将Int类型的数据赋值给String类型的变量
name = 99

4、编译时常量
编译时常量只能在函数之外定义,因为编译时常量必须在编译时赋值,而函数都是在运行时才调用,函数内的变量也是在运行时赋值,编译时常量要在这些变量赋值前就已存在。编译时常量只能是常见的基本数据类型:String、Int、Double、Float、Long、Short、Byte、Char、Boolean

//定义在函数之外  编译时常量
const val MAX = 100

5、if/else if表达式

fun ifElseExpression(){
    val age = 3
    if(age < 3){
        println("婴幼儿")
    }else if(age < 12){
        println("少儿")
    }else{
        println("青少年")
    }
}
//输出结果
//少儿

if/else if条件表达式与Java式一样的,没啥好说的
6、range表达式
int a…b,int关键字用来检查某个值是否在指定范围
也可以用!in来检查不在某个范围

fun rangeExpression(){
    val age = 3
    if(age !in 0..3){
        println("不在0-3范围")
    }else{
        println("在0-3范围")
    }
    if(age in 0..3){
        println("婴幼儿")
    }else if(age in 3..12){
        println("少儿")
    }else{
        println("青少年")
    }
}
//输出结果
//在0-3范围
//婴幼儿

这里需要注意的是a…b的时候其实是包含b的

7、when表达式
when表达式允许你编写条件式,在满足某个条件时执行对于的代码。与Java的switch/case非常类似,但更强大。if/else if也可以使用when来改进

fun whenExpression(){
    val age = 3
    when(age){
        1 -> println("1岁")
        2 -> println("2岁")
        3 -> println("3岁")
        else ->{
            println("大于3岁")
        }
    }
}
//输出结果
//3岁

8、String模板
模板支持在字符串的引号内放入变量值,还支持计算表达式 添加${}来使用。这个在Java里是没有的。比如我们希望输出Hello Jack Nice to meet you!这样一句话,但Jack这个名称是需要动态改变的,那我们在Java里面是需要进行代码上的拼接的。

String str = "Hello ";
String name = "Jack";
String str1 = " Nice to meet you!";
System.out.println(str+name+str1);

但在Kotlin中,我们可以这样

val name = "Jack"
println("Hello $name,Nice to meet you!")

是不是很爽?如何我们要进行判断进行输出的话,在Java里面也是非常麻烦的,但Kotlin就简单多了。比如我们根据年龄来输出,下面的代码可以尝试下,慢慢体会吧,确实简单很多。

val age = 10
println("我${age}岁了,已经是个${if (age > 10) "少儿" else "青少年"}了")

9、函数

//这就是一个函数
fun rangeExpression()

private fun doSomething(age:int,name:String):String
对于分别为:可见性修饰符 fun关键字 函数名 (函数参数) : 返回类型

fun doSomething(age:Int,flag:Boolean = false):String{
    return "age is ${age} flag = ${flag}"
}

上面我们定义了一个函数,对于函数我们可以给某人参数,默认参数可以不传值,比如我们可以这样调用

doSomething(20)

也可以都传值调用

doSomething(20, false)

还可以使用命名值参的方式,这时候可以不管参数顺序

doSomething(flag = true,age = 30)

Kotlin与Java是可以无障碍互通的,他们可以相互调用,但他们之间又可能存在关键字方面的冲突。比如可能在Java中的某个关键字在Kotlin这边却可以声明为函数名又或者有一些非常特殊的字符,那怎么调用就成了一个问题。这时候我们可以通过反括号来标记该函数名,在调用的时候也加上反括号,这样就可以调用了。

fun `**do`() {
    println("特殊的函数名")
}
//调用方式
`**do`()

其实在基本类型和语法这块,与Java是非常类似的(废话嘛,本来就是参考了各种语言来设计的)。所有学习起来还是非常的轻松,与Java差异的地方需要注意下就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值