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