Hello World
先来一个Kotlin 中的Hello world
fun main(args: Array<String>){
println("Hello World")
}
- 关键字fun 用来声明一个函数;
- 参数的类型写在它的名称后面;
- 函数可以定义在文件的最外层,不需要把它放在类中;
- 数组就是类,和Java不同,Kotlin没有声明数组类型的特殊语法;
- 使用println替代了System.out.println Kotlin标准库给Java标准库函数提供了许多语法更简洁的包装;
- 和许多其他现代语言一样,可以省略每行代码的结尾的分好;
函数
fun max(a: Int, b: Int): Int {
return if(a>b) a else b
}
函数的声明以关键字fun 开始,后面是函数名 ,括号中是参数列表,再后面的是返回值得类型,他们之间用: 分隔.
在Kotlin中 if 是表达式,而不是语句. 语句和表达式的区别是: 表达式有值,并且可以作为另一个表达式的一部分使用; 而语句总是包围着它的代码块中的顶层元素. 在Java 中所有的控制结构都是语句;而在Kotlin中 除了循环(for,do,do/while)以为大多数控制结构都是表达式
变量
- val (value) 不可变引用. 使用val 声明的变量不能再初始化之后再次赋值,对应Java 中的final 变量.
- var (variable) 可变引用. 这种变量的值可以被改变.这种声明对应的是普通的(非final )的Java变量.
默认情况下,应该尽量使用val 关键字来声明所有的Kotlin变量,仅在必要的时候换成var. 使用不可变引用,不可变对象及无副作用的函数让你的代码更加接近函数式编程风格.
更简单的字符串格式化:字符串模板
fun main(args : Array<String>){
val name = if(args.size>0) args[0] else "Kotlin"
println("Hello, $name!")
}
$还可以引用更加复杂的表达式.只需把表达式用花括号括起来:
fun main(args : Array<String>){
if(args.size>0){
println("Hello, ${args[0]}!")
}
}
还可以在双引号中直接嵌套双引号,在要他们处在某个表达式的范围内(花括号内):
fun main(args : Array<String>){
println("Hello, ${if (args.size > 0 ) args[0] else "SomeOne"}!")
}
类和属性
class Person(val name: String)
替代了 Java 中的
public class Person{
private final String name;
setter getter 方法
}
Kotlin 中public 默认可见的,可以省略.
枚举和"when"
enum class Color{
RED,ORANGE,YELLOW,GREEN,BLUE
}
也可以这样
enum class Color(val r: Int ,val g: Int ,val b: Int){
RED(255,0,0),ORANGE(255,165,0),YELLOW(255,255,0),
GREEN(0,255,0),BLUE(0,0,255);
//定义方法
fun rgb() = (r256+g)256+b
}
->>> println(Color.BLUE.rgb())
255
小结
- fun 关键字用来声明函数,val 关键字和 var 关键字分别用来声明只读变量和可变变量;
- 字符串模板帮助你避免繁琐的字符串链接,在变量名称前加上$ 前缀或者用$ { } 包围一个表达式,来吧值注入到字符串中;
- 值对象类在Kotlin 中以简洁的方式表示;
- 熟悉的if现在是带返回值的表达式;
- when 表达式类似于Java 中的switch 但功能更加强大;
- 在检查过变量具有某种类型后不必显式地转换它的类型;编译器使用智能转换自动帮你完成;
- for,while和do-while 循环与Java类似,但是for 循环现在更加方便,特别是需要迭代map的时候,又或是迭代集合需要下标的时候;
- 简洁的语法 1..5 会创建一个区间.区间和数列允许Kotlin 在for循环中使用统一的语法和同一套抽象机制,并且可以使用 in 运算符和 !in 运算符来检查值是否在属于某个区间;
- Kotlin 中的异常处理和Java 非常类似,除了Kotlin 不要求声明函数可以抛出的异常;
网友评论