Kotlin基础之函数与变量

作者: 墨白历险记 | 来源:发表于2018-04-12 00:47 被阅读3次
开始学习走路之"Hello world!"
# java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}
#  kotlin
fun main(args: Array<String>) {
    println("Hello wolrd!")
}

上述为分别使用Java和Kotlin语言编写的"Hello World!" 程序,
相比而言,Kotlin更为简洁,接下来我就为大家解释一下这段代码:

  • fun 用来声明一个函数,后接函数名.
  • main 代表函数名为main,且为入口函数.
  • args: Array<String> 前面为参数,冒号后面为参数类型.
  • println 代表打印并换行
函数

在上面我们已经看到了怎么声明一个没有返回值的函数,那么如何声明一个有返回值的函数呢?返回类型应该放在哪里呢?如下:

fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}

函数的声明以关键字fun开始,后面紧跟函数名称.
这个例子中的函数名称是max,接下来括号里面的是参数列表.
参数列表后面跟着返回类型,它们之间用一个冒号隔开.


函数声明

注:

在Kotlin中,if是表达式而不是语句.
表达式和语句的区别在于,表达式有值,并且能作为另一个表达式的一部分使用.
而语句总是包围着它的代码块中的顶层元素,并且没有自己的值.
在Java中,所有的流程控制结构都是语句.
而在Kotlin中,除了循环(for,do和do/while)以外大多数流程控制结构为表达式.
另外一方面,Java中的赋值操作是表达式.而在Kotlin中反而是语句.

表达式函数体

由于上述代码的函数体部分是由单个表达式构成的,可以用这个表达式作为完整的函数体,并去掉括号和return语句:

fun max(a: Int, b: Int): Int = if (a > b) a else b

甚至于更为简化的省掉返回类型

fun max(a: Int, b: Int) = if (a > b) a else b

注:只有表达式函数体的返回类型可以省略.

变量

在Java中声明变量的时候会以变量类型开始,后面解释变量名.
在Kotlin中是行不通的,因为许多变量声明的类型都可以省略.
所以在Kotlin中以关键字开始,然后是变量名字,最后可以加上变量类型(也可以不加).

val question = "How old are you"
val answer = 42
val ontherAnswer: Int = 42;

如变量没有初始化器,也就是没有复制,则必须制定变量的类型.

val name: String
  name = "starfall"
可变变量与不可变量

声明变量的关键字有两个:

  • val(value) : 不可变引用.使用val声明的变量不能再舒适化之后再次赋值.对应java中的final变量.
  • var(variable) : 可变引用.变量的值可以改变.对应普通非final变量.
    默认的情况下,应该尽可能的使用val关键字来声明所有的Kotlin变量,仅在必要的时候换成var.
    在定义了val变量的代码块执行期间,val变量只能进行唯一一次初始化.但是,如果编译器能确保只有唯一一条初始化语句会被执行,可以根据条件使用不同的值来初始化它.例如:
val message: String
    if(true){
      message = "true"
    }else{
      message = "false"
    }

注:尽管val引用自身是不可变的, 但是它指向的对象可能是可变的.例如:

val languages = arrayListOf ("Java")
      languages.add("Kotlin")

使用var关键字允许变量改变自己的值,但是类型不能更改.

字符串模板

修改"Hello World!" 如下:

fun main(args: Array<String>) {
    val name = if (args.size > 0) args[0] else "Kotlin"
    println("Hello,$name!")
}

上述代码在声明了一个变量name,并且在后面的字符串字面值中使用了它.和许多脚本语 言一样.Kotlin允许在字符串字面值中引用局部变量,只需要在变量名称前面加上字符$,等价于Java中的字符串连接.


fun main(args: Array<String>) {
    val name = if (args.size > 0) args[0] else "Kotlin"
    println("Hello,${args[0]}!")
}

使用${} 插入args数组中的第一个元素.
fun main(args: Array<String>) {
    println ("Hello, ${if (args.size > 0) args[0] else "someone"}!")
}

还可以在双引号中直接嵌套双引号,只要它们处在某个表达式的范围内(即花括号内):

相关文章

网友评论

    本文标题:Kotlin基础之函数与变量

    本文链接:https://www.haomeiwen.com/subject/bletkftx.html