Kotlin从入门到“放弃”(一)

简介: Google2017年I/O大会圆满结束了,在此次大会上谷歌爸爸把未来的重点移到了人工智能上,继续主推自家的TensorFlow,对Android开发者来说唯一的一个惊喜就是Kotlin这门语言成为了官方承认的开发语言(当然我们不能忘了Android O)。

Google2017年I/O大会圆满结束了,在此次大会上谷歌爸爸把未来的重点移到了人工智能上,继续主推自家的TensorFlow,对Android开发者来说唯一的一个惊喜就是Kotlin这门语言成为了官方承认的开发语言(当然我们不能忘了Android O)。特意开了一个Kotlin的坑,记录自己学习的历程。

1、Kotlin简介

     Kotlin是JetBrains公司开发,基于JVM的一种语言,官网说可以百分百兼容Java语言,它能够进行服务器端,Android端和web前端(兼容JavaScript)的开发。该语言相对于Java的优点解决了Java的空指针异常这一世界性难题,并且Kotlin和Java之间可以互相调用。

1.1 Kotlin环境搭建

    其实Kotlin的环境搭建不是特别复杂,Android Studio3.0 Canary版已经自带了Kotlin的插件,如果是其他版本则需要在Plugins搜索Kotlin即可。同样Itellij IDEA也可以安装该插件,在Itellij15版本之后也是默认就已经安装。

1.2 Kotlin的优势

     Kotlin没有基础类型(类型部分会在后面稍作介绍),支持Lambda表达式和闭包,支持的泛型是安全的。

2、 Hello Kotlin

    习惯性的我们从第一个kotlin工程开始接触kotlin这门语言,这里使用的IDE是Itellij2017版,kotlin插件版本是1.1.2。新建一个Java Project,并选择Kotlin(Java)作为外部类库。

    这样我们就创建了一个可以使用Kotlin去编写的Java工程,新建一个Kotlin文件。



        可以看到Kotlin下有File、Class、Interface、Enum和Object五种文件类型,这里先选File。由于Kotlin是一个面向方法的语言,可以不依赖类文件直接编写函数方法。这里写一个类似于Java的main方法
fun main(args: Array<String>){
    println("Hello Kotlin!")
}

       这个函数的目的就是输出“Hello Kotlin!”这句话,最后编译的结果如下:


3、Kotlin的基本类型

关键字

含义

var

定义变量

val

定义常量

fun

定义方法

Unit

默认的方法返回值,类似于void

vararg

可变参数

$

字符串模板(取值)

位运算符

or and shl shr ushr xor inv

in

在某个范围中

downTo

递减,循环可用,每次减一

step

步长,循环可用

when

类似于javaswitch,但是可以匹配值、值的范围,类型与参数

is

判断类型用,类似于instanceof()

4、定义基本函数和类

        这是入坑的第一篇,由浅入深才是关键,从最基本的函数和类去了解这门新语言, 从上面的main函数我们可以知道,函数的形参表示为(参数: 类型),学习函数从最基本的开始
fun sum(a: Int, b: Int): Int {
    return a+b    
}

        如果有返回值的话,需要加上:后面跟上返回值的类型。其实没有返回值的函数默认返回的是Unit类型,类似于Java方法的void。上面的函数只有表达式,而且本身就是返回值,这样的话可以直接写成下面的样子

fun sum(a: Int, b: Int) = a + b
       Kotlin毕竟是基于JVM的一种语言,面向对象也是必须具备的技能,但是Kotlin的类和Java的类还是有点不同。创建类的步骤与上面的函数类似,选择class文件创建一个MainClass,仿照Java的类在里面写一个main函数用来作为类的入口
class MainClass {
    fun main(args: Array<String>) {
        println("Hello World!")
    }
}

       但是我们发现这个文件好像不能直接run,那我们只能先build整个项目,以便查看这个文件编译之后的字节码文件(.class文件),如下:


      可以看到Kotlin的类文件其实也是编译成了类似于Java的文件,而Java的main方法都是静态的static,而这里并不是,同样的类和函数都是final类型的,这也对类的继承和方法的重写有影响,这些问题后面再去解决,入门篇就先写这么多吧。


目录
相关文章
|
6月前
|
Java Kotlin
开心档-软件开发入门之​Kotlin 基本数据类型​
开心档-软件开发入门之​Kotlin 基本数据类型​
15 0
|
7月前
|
Java 开发工具 Android开发
Kotlin入门学习
Kotlin入门学习
39 0
|
6月前
|
Java Unix 编译器
开心档-软件开发入门之​Kotlin 使用命令行编译​
开心档-软件开发入门之​Kotlin 使用命令行编译​
27 0
|
6月前
|
Java Kotlin
开心档-软件开发入门之​Kotlin 条件控制
开心档-软件开发入门之​Kotlin 条件控制
19 0
|
6月前
|
Java Unix 编译器
开心档-软件开发入门之​Kotlin 使用命令行编译​
开心档-软件开发入门之​Kotlin 使用命令行编译​
|
6月前
|
Java iOS开发 Kotlin
开心档-软件开发入门之​Kotlin 基本数据类型​
开心档-软件开发入门之​Kotlin 基本数据类型​
|
11月前
|
Java Kotlin
开心档-软件开发入门之​Kotlin 基本数据类型
前言 本章将会讲解 Kotlin 基本数据类型 目录 Kotlin 基本数据类型 字面常量 比较两个数字 类型转换 位操作符 字符 布尔 数组 字符串 字符串模板
|
11月前
|
NoSQL MongoDB 数据库
开心档-软件开发入门之Kotlin 基础语法
前言 目录 Kotlin 基础语法 包声明 默认导入 函数定义 可变长参数函数 lambda(匿名函数) 定义常量与变量 注释 字符串模板 NULL检查机制 类型检测及自动类型转换 区间 实例测试 实例 本章将会讲解 Kotlin 基础语法 在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
|
JSON 算法 安全
Kotlin协程入门食用指南
我们需要处理并发过程中的调度问题,使应用程序在这种操作过程中不至于阻塞,而造成应用崩溃。为此,官方推出了协程来编写非阻塞并发代码来解决以上需求,让我们对协程进行相关知识点学习
346 0
|
API UED Kotlin
Kotlin Flow 看这一篇 带你入门~
Kotlin Flow 看这一篇 带你入门~
1057 1
Kotlin Flow 看这一篇 带你入门~