第二章 2.1 基本要素:函数和变量

目录

2.1.1 Hello,World!

2.1.2 函数

2.1.3 变量

2.1.4 更简单的字符串格式化: 字符串模板


2.1.1 Hello,World!

val name: String = "cyk"

val age: Int = 5

fun main(args: Array<String>) {

println("Hello,world")

}

1、用fun声明一个函数

2、参数类型写在变量名称后面

3、函数可以定义在文件的最外层,不需要放在类中

4、Kotlin没有声明数组类型的特殊语法

5、可以省略每行代码结尾的分号


2.1.2 函数

 声明一个有返回值得函数,参数列表后面跟着返回类型,用一个冒号隔开

fun printAge(age: Int): String {

return "age = $age"

}

表达式函数体

可以让前面的函数变得更加简单。因为它的函数体是由单个表达式构成的,可以用这个表达式作为完整的函数体,并去掉花括号和return语句:

fun printAge(age: Int): String = "age = $age"

如果函数体写在花括号中,我们说这个函数有代码块体。如果它直接返回了一个表达式,它就有表达式体。

还可以对表达式函数体进一步简化,省掉返回类型:

fun printAge(age: Int) = "age = $age"

为什么可以不声明返回类型?事实上,每个变量和表达式都有类型,每个函数都有返回类型。但对表达式体函数来说,编译器会分析作为函数体的表达式,并把它的类型作为函数的返回类型,这种分析称为类型推导。只有表达式体函数的返回类型可以省略


2.1.3 变量

 在java中声明变量的时候会以类型开始。再Kotlin中这样是行不通的,因为许多变量声明的类型都可以省略。所以在Kotlin中以关键字开始,然后是变量名称,最后可以加上类型(不加也行):

val age: Int = 5 -> val age = 5

和表达式体函数一样,如果不指定变量的类型,编译器会分析初始化器表达式的值,并把它的类型作为变量的类型。

可变变量和不可变量

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

1、val (来自 value) ---不可变引用。使用val声明的变量不能在初始化后再次赋值。它对应java中的final变量

2、var (来自 variable) ---可变引用。这种变量可以被改变

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

val language = arrayListOf<String>("java") //声明不可变引用

language.add("Kotlin") //改变引用指向的对象

2.1.4 更简单的字符串格式化: 字符串模板

fun main(args: Array<String>) {

val language = if (args.size > 0) args[0] else "Kotlin"

println("hello,$language!")

}

声明一个变量language,并在后面的字符串中使用了它,和许多脚本语言一样,Kotlin让你可以在字符串字面值中,引用局部变量,只需要在变量名称签名加上字符$。在java中这等价于("hello,“+language+"!")

如果要在字符串中使用$字符,你要对它进行转义:

println("hello,\$language")

会打印 hello,$language 并不会把language解释成变量的作用。

还可以引用更复杂的表达式,不仅局限简单的变量名称,还可以在双引号中直接嵌套双引号

println("hello,${if (args.size > 0) args[0] else "Kotlin"}!")

参考《Kotlin实战》

猜你喜欢

转载自blog.csdn.net/cai784921129/article/details/81317428
今日推荐