Kotlin变量与函数

变量

在Kotlin中定义变量与JAVA有很大的区别,JAVA中比如你想定义一个整型变量你的这么写:

private int i = 0;

如果是一个字符串变量的话你得这么写:

private String s = "";

其中private是访问控制修饰符,int和String是变量类型,=号后面跟的是具体的值。
而Kotlin中定义一个变量,只允许在变量前声明两种关键字:valvar

val:value的简写,用来声明一个不可变的变量,这种变量在初始化赋值之后就再也不能重新赋值,对应JAVA中的final变量。

var:variable的简写,用来声明一个可变的变量,可以再被重新赋值,对应JAVA中非final的变量。

纳尼?竟然没有确定类型,对于写习惯JAVA的我来说第一次写Kotlin的时候真的是不习惯,有点害怕这个变量到底是不是我想要的类型。但这也恰恰是Kotlin比较有特色的一点:Kotlin有出色的类型推导机制!

所以在Kotlin中你要这么写:

val i = 0
val s = ""

当出现0 或者""的时候,该变量就会自动的被推导成整型或者字符串变量。

但是Kotlin的类型推导机制并不总是可以正常工作的,比如说我定义一个变量的时候不想对它进行初始化赋值,在之后对它延迟赋值,Kotlin就不能自动推导它的类型了,这里就需要显示的声明类型了:

val i: Int = 0
val s: String = ""

你看现在就显示的声明了i的类型是int,s的类型是String,如果你写过JAVA,你会发现,Kotlin中的Int竟然是大写的,这是因为Kotlin完全抛弃了基本数据类型的概念,全部使用的对象数据类型!所以,在JAVA中,int只一个关键字,在Kotlin中,Int变成了一个类,它拥有自己的方法和继承结构。

Kotlin提供了延迟初始化的方式来解决初始化的问题,使用关键字lateinit即可,然而会有一些问题:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020111723125363.png#pic_center在这里插入图片描述

可以看到,String类型没有问题,而Int型会报lateinit modifier is not allowed on primitive type properties。Kotlin并不支持对原生类型进行lateinit,为什么呢?因为Kotlin会使用null来对每一个用lateinit修饰的属性做初始化,而基础类型是没有null类型,所以无法使用lateinit。这点很好理解,就像可以把int型变量赋值为0,却无法赋值为null一样。所以这里为了通过IDE的编译,我们可以采用两种方案,要么还是直接在i声明时进行初始化,要么不用基础类型来定义i

函数

函数——也就是方法,这俩是同一种概念,函数翻译来自functiom,方法翻译来自method。
在Kotlin中定义一个函数语法规则如下:

fun testMethod(param1: Int, param2: String): Int {
    return 0
}

fun:function的缩写,定义函数的关键字,无论定义什么函数,都得用fun来声明。

testMethod:函数的名字。
注意命名的时候不要嫌函数名字太长,要保持一个好的习惯,一眼就能看出这个函数是干什么的,哪怕名字再长也无所谓。

param1: Int第一个参数名字,冒号后面的Int说明这个形参类型是Int型的。
param2: String第二个参数的名字,冒号后面的String说明这个形参类型是字符串型的
注意参数的个数可以是任意个。
最后大括号前面的Int是该函数的返回值类型,所以方法里面我返回了个0。

当函数中只有一行代码时,Kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数定义的尾部,中间用等号连接即可,比如上面的testMethod方法可以写成这样:

fun testMethod(param1: Int, param2: String): Int = 0

并且,由于Kotlin出色的类型推导机制,我可以不必显示地声声明testMethod的返回值,代码可以进一步简化:

fun testMethod(param1: Int, param2: String) = 0

这是Kotlin的语法糖之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值