###Kotlin简介
####Kotlin是什么
Kotlin是JetBrains公司开发的一门语言(主要开发人员是Andrey--Kotlin之父),一圣彼得堡附近的Kotlin岛屿来命名的。保证了Java的生态、静态特性,同时在语法上又灵活一些,比如不写分号、支持扩展方法、支持Lambda、支持函数式编程,空类型安全。
Kotlin是一门可以运行在JVM、Android、浏览器、甚至操作系统上面的一门静态强类型语言,可以编译成JavaScript源码,运行在浏览器上,与Java100%兼容。
- Kotlin在2017年5月18日成为了Android的开发语言
- 100%兼容Java,甚至具备Java不具备的新特性
- Kotlin的目标是发展成为一门全栈开发语言,Kotlin可以编译成JS源码,开发前端。可以跑在JVM上开发服务端,Kotlin-Native可以编译成机器码,直接跑在操作系统上。
- Kotlin支持中文编写代码,例如变量名、类名、包名等都可以为中文。(但是实际开发中一般不推荐用中文,因为会带来字符编码等问题)
####Kotlin发展历程
- 2010立项
- 2011.6公开
- 2012.2开源
- 2013.8支持Android Studio
- 2014.6开源web站点与域名Kotlinlang.org上线
- 2016.2发布1.0(API趋于稳定)
- 2016.9发布1.0.4,支持apt
- ...后续
####Kotlin的特性
为什么有了Java还需要有Kotlin?下面就看看Kotlin的一些特性吧:
- 空类型安全
- Lambda表达式
- 扩展方法
- 类型推导
- 胜任Java能做的所有事情,使用起来比Java简单,例如没有句末分号
###Kotlin环境搭建
####Kotlin练习环境搭建之--Hello Word!
下面我们先用IDEA来创建一个项目,打开IDEA,创建项目,选择Kotlin(JVM),如下图所示:
######Tips:如果没有Kotlin选项,请先安装Kotlin插件,创建项目需要选择lib库。 ######Tips:首次创建项目需要Index一两分钟。
与Java一样,在src目录下面创建一个Package,创建.kt文件:
fun main(args: Array<out String>) {
print("Hello Word\n")
//创建类的时候不需要new关键字了
print(MyBean(1, "test bean"))
}
//Kotlin风格的数据对象
data class MyBean(var id: Int, var name: String)
复制代码
那么程序就会输出:
Hello Word
MyBean(id=1, name=test bean)
复制代码
细心的朋友可能会发现,其实println就是调用了Java的方法:
@kotlin.internal.InlineOnly
public inline fun println(message: Any?) {
System.out.println(message)
}
复制代码
####Kotlin练习环境搭建之--使用Gradle搭建环境(推荐)
Gradle是一个依赖管理的工具,以前我们都是直接把jar包等源码直接拷贝进来的,但是这样很麻烦。有了Gradle之后,我们就可以通过脚本或者图形化界面进行依赖管理了,对以后依赖库的升级维护也很方便。
同样用IDEA进行开发,下面我们创建一个项目,选择Gradle、Kotlin,如下图所示:
接下来配置构件信息,其中包括代表公司或者组织的GroupId,代表自己在公司或者组织里面的代表自己的ArticleFactId,然后就是构件的版本:
然后就是配置Gradle,这里笔者使用自己本地的Gradle,然后选择生成一些重要的文件夹,例如src/main/java目录:
项目创建好之后如下:
工具已经帮我们创建好需要的目录了。我们下面来看一些与Gradle相关的重要文件:
settings.gradle:是存放每个module的信息的,其内容如下:
rootProject.name = 'KotlinDemo'
复制代码
build.gradle,与build相关的脚本,其内容如下:
group 'nan.com'
version '1.0-SNAPSHOT'
buildscript {
repositories {
//下面的dependencies中,插件的地址
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.4"
}
}
//标识Java与Kotlin工程,存放着与编译相关的一系列指令集
apply plugin: 'java'
apply plugin: 'kotlin'
//标识Java的版本,这里没有使用到
sourceCompatibility = 1.5
repositories {
//module中的依赖的地址
jcenter()
}
//Gradle中最重要的功能--依赖管理
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.4"
testCompile group: 'junit', name: 'junit', version: '4.11'
}
复制代码
####使用Gradle进行依赖管理
由于Kotlin中,反射包是独立与基础包的,因此我们以反射这个包为例子,介绍一下使用Gradle进行依赖管理。
修改build.gradle:
//Gradle中最重要的功能--依赖管理
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.4"
//增加反射依赖
compile "org.jetbrains.kotlin:kotlin-reflect:1.0.4"
testCompile group: 'junit', name: 'junit', version: '4.11'
}
复制代码
然后就可以在代码中进行反射操作了,例如我们拿到Person类的构造方法,并且打印出来:
fun main(args: Array<String>) {
Person::class.constructors.map {
print(it)
}
//也可以通过代码提示直接改成这种写法
Person::class.constructors.map(::print)
}
data class Person(var id: Int, var name: String) {
}
复制代码
###Kotlin简介
####Kotlin是什么
Kotlin是JetBrains公司开发的一门语言(主要开发人员是Andrey--Kotlin之父),一圣彼得堡附近的Kotlin岛屿来命名的。保证了Java的生态、静态特性,同时在语法上又灵活一些,比如不写分号、支持扩展方法、支持Lambda、支持函数式编程,空类型安全。
Kotlin是一门可以运行在JVM、Android、浏览器、甚至操作系统上面的一门静态强类型语言,可以编译成JavaScript源码,运行在浏览器上,与Java100%兼容。
- Kotlin在2017年5月18日成为了Android的开发语言
- 100%兼容Java,甚至具备Java不具备的新特性
- Kotlin的目标是发展成为一门全栈开发语言,Kotlin可以编译成JS源码,开发前端。可以跑在JVM上开发服务端,Kotlin-Native可以编译成机器码,直接跑在操作系统上。
- Kotlin支持中文编写代码,例如变量名、类名、包名等都可以为中文。(但是实际开发中一般不推荐用中文,因为会带来字符编码等问题)
####Kotlin发展历程
- 2010立项
- 2011.6公开
- 2012.2开源
- 2013.8支持Android Studio
- 2014.6开源web站点与域名Kotlinlang.org上线
- 2016.2发布1.0(API趋于稳定)
- 2016.9发布1.0.4,支持apt
- ...后续
####Kotlin的特性
为什么有了Java还需要有Kotlin?下面就看看Kotlin的一些特性吧:
- 空类型安全
- Lambda表达式
- 扩展方法
- 类型推导
- 胜任Java能做的所有事情,使用起来比Java简单,例如没有句末分号
###Kotlin环境搭建
####Kotlin练习环境搭建之--Hello Word!
下面我们先用IDEA来创建一个项目,打开IDEA,创建项目,选择Kotlin(JVM),如下图所示:
######Tips:如果没有Kotlin选项,请先安装Kotlin插件,创建项目需要选择lib库。 ######Tips:首次创建项目需要Index一两分钟。
与Java一样,在src目录下面创建一个Package,创建.kt文件:
fun main(args: Array<out String>) {
print("Hello Word\n")
//创建类的时候不需要new关键字了
print(MyBean(1, "test bean"))
}
//Kotlin风格的数据对象
data class MyBean(var id: Int, var name: String)
复制代码
那么程序就会输出:
Hello Word
MyBean(id=1, name=test bean)
复制代码
细心的朋友可能会发现,其实println就是调用了Java的方法:
@kotlin.internal.InlineOnly
public inline fun println(message: Any?) {
System.out.println(message)
}
复制代码
####Kotlin练习环境搭建之--使用Gradle搭建环境(推荐)
Gradle是一个依赖管理的工具,以前我们都是直接把jar包等源码直接拷贝进来的,但是这样很麻烦。有了Gradle之后,我们就可以通过脚本或者图形化界面进行依赖管理了,对以后依赖库的升级维护也很方便。
同样用IDEA进行开发,下面我们创建一个项目,选择Gradle、Kotlin,如下图所示:
接下来配置构件信息,其中包括代表公司或者组织的GroupId,代表自己在公司或者组织里面的代表自己的ArticleFactId,然后就是构件的版本:
然后就是配置Gradle,这里笔者使用自己本地的Gradle,然后选择生成一些重要的文件夹,例如src/main/java目录:
项目创建好之后如下:
工具已经帮我们创建好需要的目录了。我们下面来看一些与Gradle相关的重要文件:
settings.gradle:是存放每个module的信息的,其内容如下:
rootProject.name = 'KotlinDemo'
复制代码
build.gradle,与build相关的脚本,其内容如下:
group 'nan.com'
version '1.0-SNAPSHOT'
buildscript {
repositories {
//下面的dependencies中,插件的地址
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.4"
}
}
//标识Java与Kotlin工程,存放着与编译相关的一系列指令集
apply plugin: 'java'
apply plugin: 'kotlin'
//标识Java的版本,这里没有使用到
sourceCompatibility = 1.5
repositories {
//module中的依赖的地址
jcenter()
}
//Gradle中最重要的功能--依赖管理
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.4"
testCompile group: 'junit', name: 'junit', version: '4.11'
}
复制代码
####使用Gradle进行依赖管理
由于Kotlin中,反射包是独立与基础包的,因此我们以反射这个包为例子,介绍一下使用Gradle进行依赖管理。
修改build.gradle:
//Gradle中最重要的功能--依赖管理
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.4"
//增加反射依赖
compile "org.jetbrains.kotlin:kotlin-reflect:1.0.4"
testCompile group: 'junit', name: 'junit', version: '4.11'
}
复制代码
然后就可以在代码中进行反射操作了,例如我们拿到Person类的构造方法,并且打印出来:
fun main(args: Array<String>) {
Person::class.constructors.map {
print(it)
}
//也可以通过代码提示直接改成这种写法
Person::class.constructors.map(::print)
}
data class Person(var id: Int, var name: String) {
}
复制代码
###Kotlin简介
####Kotlin是什么
Kotlin是JetBrains公司开发的一门语言(主要开发人员是Andrey--Kotlin之父),一圣彼得堡附近的Kotlin岛屿来命名的。保证了Java的生态、静态特性,同时在语法上又灵活一些,比如不写分号、支持扩展方法、支持Lambda、支持函数式编程,空类型安全。
Kotlin是一门可以运行在JVM、Android、浏览器、甚至操作系统上面的一门静态强类型语言,可以编译成JavaScript源码,运行在浏览器上,与Java100%兼容。
- Kotlin在2017年5月18日成为了Android的开发语言
- 100%兼容Java,甚至具备Java不具备的新特性
- Kotlin的目标是发展成为一门全栈开发语言,Kotlin可以编译成JS源码,开发前端。可以跑在JVM上开发服务端,Kotlin-Native可以编译成机器码,直接跑在操作系统上。
- Kotlin支持中文编写代码,例如变量名、类名、包名等都可以为中文。(但是实际开发中一般不推荐用中文,因为会带来字符编码等问题)
####Kotlin发展历程
- 2010立项
- 2011.6公开
- 2012.2开源
- 2013.8支持Android Studio
- 2014.6开源web站点与域名Kotlinlang.org上线
- 2016.2发布1.0(API趋于稳定)
- 2016.9发布1.0.4,支持apt
- ...后续
####Kotlin的特性
为什么有了Java还需要有Kotlin?下面就看看Kotlin的一些特性吧:
- 空类型安全
- Lambda表达式
- 扩展方法
- 类型推导
- 胜任Java能做的所有事情,使用起来比Java简单,例如没有句末分号
###Kotlin环境搭建
####Kotlin练习环境搭建之--Hello Word!
下面我们先用IDEA来创建一个项目,打开IDEA,创建项目,选择Kotlin(JVM),如下图所示:
######Tips:如果没有Kotlin选项,请先安装Kotlin插件,创建项目需要选择lib库。 ######Tips:首次创建项目需要Index一两分钟。
与Java一样,在src目录下面创建一个Package,创建.kt文件:
fun main(args: Array<out String>) {
print("Hello Word\n")
//创建类的时候不需要new关键字了
print(MyBean(1, "test bean"))
}
//Kotlin风格的数据对象
data class MyBean(var id: Int, var name: String)
复制代码
那么程序就会输出:
Hello Word
MyBean(id=1, name=test bean)
复制代码
细心的朋友可能会发现,其实println就是调用了Java的方法:
@kotlin.internal.InlineOnly
public inline fun println(message: Any?) {
System.out.println(message)
}
复制代码
####Kotlin练习环境搭建之--使用Gradle搭建环境(推荐)
Gradle是一个依赖管理的工具,以前我们都是直接把jar包等源码直接拷贝进来的,但是这样很麻烦。有了Gradle之后,我们就可以通过脚本或者图形化界面进行依赖管理了,对以后依赖库的升级维护也很方便。
同样用IDEA进行开发,下面我们创建一个项目,选择Gradle、Kotlin,如下图所示:
接下来配置构件信息,其中包括代表公司或者组织的GroupId,代表自己在公司或者组织里面的代表自己的ArticleFactId,然后就是构件的版本:
然后就是配置Gradle,这里笔者使用自己本地的Gradle,然后选择生成一些重要的文件夹,例如src/main/java目录:
项目创建好之后如下:
工具已经帮我们创建好需要的目录了。我们下面来看一些与Gradle相关的重要文件:
settings.gradle:是存放每个module的信息的,其内容如下:
rootProject.name = 'KotlinDemo'
复制代码
build.gradle,与build相关的脚本,其内容如下:
group 'nan.com'
version '1.0-SNAPSHOT'
buildscript {
repositories {
//下面的dependencies中,插件的地址
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.4"
}
}
//标识Java与Kotlin工程,存放着与编译相关的一系列指令集
apply plugin: 'java'
apply plugin: 'kotlin'
//标识Java的版本,这里没有使用到
sourceCompatibility = 1.5
repositories {
//module中的依赖的地址
jcenter()
}
//Gradle中最重要的功能--依赖管理
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.4"
testCompile group: 'junit', name: 'junit', version: '4.11'
}
复制代码
####使用Gradle进行依赖管理
由于Kotlin中,反射包是独立与基础包的,因此我们以反射这个包为例子,介绍一下使用Gradle进行依赖管理。
修改build.gradle:
//Gradle中最重要的功能--依赖管理
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.4"
//增加反射依赖
compile "org.jetbrains.kotlin:kotlin-reflect:1.0.4"
testCompile group: 'junit', name: 'junit', version: '4.11'
}
复制代码
然后就可以在代码中进行反射操作了,例如我们拿到Person类的构造方法,并且打印出来:
fun main(args: Array<String>) {
Person::class.constructors.map {
print(it)
}
//也可以通过代码提示直接改成这种写法
Person::class.constructors.map(::print)
}
data class Person(var id: Int, var name: String) {
}
复制代码