hello world:(支持函数式编程,不需要放到 class 中)

fun main(args: Array<String>) {
println("Hello World")
}

  

kotlin 关键字可分为 3 类:

硬关键字:这些关键字无论在什么情况下都不能用作标识符。

软关键字:这些关键字可以在它们不起作用的上下文作标识符。

修饰符关键字:这些关键字也可以在代码中用作标识符。

Kotlin 的硬关键字包括:(其他语言也有的就忽略了)

as:用于做类型转换或为 import 语句指定别名。

as?:类型安全的类型转换运算符

fun:声明函数

in:在 for 循环中使用;in还可作为双目运算符,检查一个值是否处于区间或集合内;in 也可在 when 表达式中使用;in 还可用于修饰泛型参数,表明该泛型参数支持逆变。

!in:可作为双目运算符 in 的反义词;!in 也可在 when 表达式中使用

is:用于做类型检查 (类似 java 的 instanceof) 或在 when 表达式中使用。

!is:用于做类型检查(is 的反义词) 或在 when 表达式中使用

null:代表空的直接量

object:用于声明对象表达式或定义命名对象

typealias:用于定义类型别名

val:声明只读属性或变量

var:声明可变属性或变量

when:用于 when 表达式

kotlin 的软关键字包括:

by:用于将接口或祖先类的实现代理给其他对象

constructor:用于声明构造器

delegate:用于指定该注解修饰委托属性存储其委托实例的字段

dynamic:主要用于在 Kotlin/JavaScript 中引用一个动态类型

field:用于指定该注解修饰属性的幕后字段

file:用于指定该注解修饰该源文件本身

get:用于声明属性的 getter 方法,或者用于指定该注解修饰属性的 getter 方法

init:用于声明初始化块

param:用于指定该注解修饰构造器参数

property:用于指定该注解修饰整个属性(这种目标的注解对 java 不可见,因为 java 并没有真正的属性)

receiveris:用于指定该注解修饰扩展方法或扩展属性的接收者

set:用于声明属性的 setter 方法,或者用于指定该注解修饰属性的 setter 方法

setparam:用于指定该注解修饰 setter 方法的参数

where:用于为泛型参数增加限制

Kotlin 的修饰符关键字包括:

abstract:用于修饰抽象类或抽象成员

annotation:用于修饰一个注解类

companion:用于修饰一个伴生对象

const:用于声明编译时常亮

crossinline:用于禁止在传给内联函数的 Lambda 表达式中执行非局部返回

data:用于声明数据类

enum:用于声明枚举

external:用于声明某个方法不由 Kotlin 实现(与 Java 的 native 相似)

final:用于禁止被重写

infix:声明该函数能以双目运算符的格式执行

inline:用于声明内联函数,Lambda 表达式可在内联函数中执行局部返回

inner:用于声明内部类,内部类可以访问外部类的实例

internal:用于表示被修饰的声明只能在当前模块内可见

lateinit:用于修饰一个 non-null 属性,用于指定该属性可在构造器以外的地方完成初始化

noinline:用于禁止内联函数中个别 Lambda 表达式被内联化

open:用于修饰类,表示该类可派生子类;或者用于修饰成员,表示该成员可以被重写

out:用于修饰泛型参数,表明该泛型参数支持协变

override:用于声明重写父类的成员

reified:用于修饰内联函数中的泛型形参,接下来在该函数中就可像使用普通类型一样使用该类型参数

sealed:用于声明一个密封类

suspend:用于标识一个函数后 Lambda 表达式可作为暂停

tailrec:用于修饰一个函数可作为尾随递归函数使用

vararg:用于修饰形参,表明该参数是个数可变的形参。

kotlin Hello World 以及关键字的更多相关文章

  1. java太low,又舍不得jvm平台的丰富资源?试试kotlin吧(一)

    尝试kotlin的起因 因为各种原因(版权,人员招聘),公司的技术体系从c#转到了java,我花了大概两周的时间来上手java,发现java的语法还是非常简单的,基本看着代码就知道什么意思.学习jav ...

  2. 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试

    1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1. ...

  3. Kotlin——从无到有系列之高级篇(一):Lambda表达式

    如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 经过前面一系列对K ...

  4. 初识Kotlin之变量

    用Java开发了很多年,因为工作的需要学习Kotlin.初识Kotlin时是各种不习惯,觉得这个语言相对于Java而言并不够严谨.随着不断的深入,最终还是逃不过"真香定理".我一直 ...

  5. 写给Android开发者的Kotlin入门

    写给Android开发者的Kotlin入门 转 https://www.jianshu.com/p/bb53cba6c8f4 Google在今年的IO大会上宣布,将Android开发的官方语言更换为K ...

  6. Kotlin 类和对象

    类定义 Kotlin 类可以包含:构造函数和初始化代码块.函数.属性.内部类.对象声明. Kotlin 中使用关键字 class 声明类,后面紧跟类名: class Runoob { // 类名为 R ...

  7. Kotlin 随笔小计

    最近准备学Kotlin 现在Kotlin也能支持IOS开发了,准备后面买个Mac也能进行IOS开发 当然目标还是看着能不能把一些小的Android项目重构下 也算是定个目标吧,由于沉迷吃鸡,日志都没怎 ...

  8. Kotlin入门(25)共享参数模板

    共享参数SharedPreferences是Android最简单的数据存储方式,常用于存取“Key-Value”键值对数据.在使用共享参数之前,要先调用getSharedPreferences方法声明 ...

  9. Kotlin入门(15)独门秘笈之特殊类

    上一篇文章介绍了Kotlin的几种开放性修饰符,以及如何从基类派生出子类,其中提到了被abstract修饰的抽象类.除了与Java共有的抽象类,Kotlin还新增了好几种特殊类,这些特殊类分别适应不同 ...

随机推荐

  1. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

    1. 摘要 训练深层的神经网络非常困难,因为在训练的过程中,随着前面层数参数的改变,每层输入的分布也会随之改变.这需要我们设置较小的学习率并且谨慎地对参数进行初始化,因此训练过程比较缓慢. 作者将这种 ...

  2. 兰亭集势收购美国社交购物网站Ador,收购的是人才

    1 月 6 日消息,外贸电商公司兰亭集势(LightInTheBox)今日宣布,已经完成对美国社交电商网站 Ador 公司的收购.Ador 公司总部位于西雅图.这项资产收购通过现金完成,但未披露交易金 ...

  3. redis rdb aof比较

    Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一 ...

  4. Python 深浅复制

    (一)浅复制 复制列表最简单的方式是使用内置类型的构造方法: >>> l1 = [1, [2, 3], (4, 5)] >>> l2 = list(l1) > ...

  5. Beta冲刺第二周王者荣耀交流协会第四次会议

    1.例会照片: 成员:王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:王玉玲 2.时间跨度: 2017年11月20日 18:00 — 18:13,总计13分钟. 3.地点: 一 ...

  6. P4tutorial实战

    Tutorial样例实战 GitHub仓库地址 参考博客 实验一:SIGCOMM_2015/Sourse_Routing 实验环境: OS:Ubuntu16.04 bmv2:behavioral-mo ...

  7. 【Mark】Android应用开发SharedPreferences存储数据的使用方法

    Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...

  8. (九) 使用Jmeter 做分布式压测 ;

    在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能. 一.Jmeter分 ...

  9. mb_strlen(,utf-8);可以除去中文字符,统一返回是几个字符

    mb_strlen(,utf-8);可以除去中文字符,统一返回是几个字符

  10. PHP简单模拟登录功能实例分享

    1.curl实现模拟登录的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话) <?php $cookie_jar = tempnam('./tmp','cookie ...