初探Kotlin(二)

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 不要求声明函数可以抛出的异常;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 《Kotin 编程思想·实战》 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 >...
    禅与计算机程序设计艺术阅读 2,021评论 1 4
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,062评论 9 118
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,295评论 18 399
  • 1.extends 用 (冐号):代替。MainActivity extends Activity, 现在是 Ma...
    JxMY阅读 2,387评论 2 3
  • 第二章 线程安全知识 线程安全的代码其核心在于要对状态访问进行管理,比如 共享的、可变的状态。正确的编程方式是首先...
    不排版阅读 329评论 0 0