• Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性。
  • Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于 Android开发者,有两个有趣的特点:
  • 对Java开发者来说,Kotlin是非常直觉化的,并且非常容易学习。语言的大部 分内容都是与我们知道的非常相似,所以能迅速地掌 握它。
  • AndroidStudio作为目前最流行的Android开发工具,能够非常完美地理解、编译运行Kotlin代码。AndroidStudio 3.0之后已经完美支持kotlin

1.下面是AndroidStudio的配置

  1.1 在Project对应的build.gradle文件中添加如下代码:

  ext.kotlin_version = '1.1.2-4' //kotlin版本号

  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

1.2 在module对应的build.gradle文件 中添加代码::

  添加插件 apply plugin: 'kotlin-android'

  添加依赖库 compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

  重新build project就可以使用kotlin了。

  2.下面说下kotlin的基本语法(借鉴了Kotlin的官网文档)

        基本类型Basic Types

   2.1 Number类型

    

定义变量

    val a: Int = 10000

    val boxedA: Int? = a

    val b: Byte = 1

    每个Number类型的变量支持如下方法进行转换

    

    如:val i: Int = b.toInt()

   2.2 Operations

    如 val x = (1 shl 2) and 0x000FF000

    

   2.3 Characters

     字符型 定义如:val c: Char = 'C'

    2.4 Booleans

    布尔类型 定义如:val b: Boolean = false;

   2.5 Arrays

    数组类型 定义如:val x: IntArray = intArrayOf(1, 2, 3)

  2.6 Strings

    字符串类型 定义如:val s = "Hello, world"

  

  3.基本语法

  3.1 if语句

  

3.2 when语句(替代了java里的switch)

  

3.3 for循环语句

  

  循环遍历集合collection里面的数据 并输出

3.4 while 和 do...while语句和java类似

  

 4. 方法的定义

  格式如:fun 方法名(参数名 :参数类型):返回值类型{

      }

  比如:

  

  我们还可以给参数设置默认值 如:

  fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size()) { ... }

  5. 类的定义

  格式如:class 类名{

      }

  在Kotlin中,一个类有一个primary constructor,一个或多个secondary constructors。primary constructor 属于类头部分,它在类名之后。

  

  如果primary constructor没有任何注解或者指示符,constructor关键字可以被省略。

  

相反,如果primary constructory有注解或者可见的指示符,constructor是必须的。

  

  primary constructor不能包含任何的代码,初始代码可以放在初始块中,初始化代码块以init关键字开头。

  

  需要注意的是,在主构造函数里,可以直接用这些参数变量赋值给类的属性,或者用构造代码块来实现初始化。

  

  Secondary Constructors

  除了primary constructory,还有secondary constructors,同样也是constructor开头,位于类体中。 
  值得说明的是,如果primary constructory和secondary constructors同时存在,每个secondary constructor需要委托到primary constructor中去,或者间接通过另一个secondary constructors来委托。使用方法就是使用            this,表示委托到本类的另一个构造函数中。

  

  如果非抽象的类没有声明任何的构造函数,它默认继承一个没有任何参数的公有构造器,这个跟Java中的默认构造器类似。如果希望它继承的是一个私有的构造器,就需要显示的指明。

  

  创建类的对象实例我们可以这么实现

  val invoice = Invoice()

  val customer = Customer("帅气的码农")

  6. 类的继承

   用“:”冒号实现类的继承

   定义一个父类 Person

   open class Person(age: Int)  //open关键字跟Java中的final是相反

   子类继承

   class Child(age: Int) : Person(age)

   如果父类没有primary constructor,子类的每个secondary constructor在右边使用super来对它进行初始化。

   class Child : Person {

    constructor(ctx: Context) : super(ctx) { }

    constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) { }

    }

  7. 方法重写

   重写成员函数

   对于可以重写的函数,都需要显示的指明,使用的是open关键字。如果没有,在子类中声明跟父类相同的方法是非法的。

   open class Person {

     open fun v() {}

     fun nv() {}

      }

   class Child() : Base() {

      override fun v() {}

    }

  在子类中被标记为override的成员函数本身也是可以被重新的,也就是open的,如果希望它禁止被重写,需要使用final关键字。

      重写规则

如果一个类继承自多个类,并且它的这些父类都有同一个可以重写的函数,那么这个类必须重写这个函数并且提供它自己的实现,另外在子类中指示父类的方法是super<A>,A为父类类名,这样就可以指示不同的父类            了。

 8. 抽象类

  抽象类

  跟Java一样,使用abstract关键字。

 9. Companion Objects

  Kotlin 移除了 static 的概念。通常用 companion object 来实现类似功能。

  我们在 Activity 定义一个静态类型的 string,名叫TAG,和一个启动 Activity 的静态方法:

  

  我们用kotlin可以这么写:

  

  好了 今天先介绍这么多 kotlin还有很多关键字和语法操作符没有介绍到,后续更新!!!

Kotlin基本语法和使用的更多相关文章

  1. Kotlin基础语法学习

    Kotline简介 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源.与Java相比,Kotlin的语法更简洁.更具表达性,而且提供了更多的特性,比如,高阶函 ...

  2. Kotlin 特性 语法糖 优势 扩展 高阶 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. Kotlin基本语法笔记之函数、变量的定义及null检测

    定义函数 fun sum(a: Int, b: Int): Int { return a + b } 该函数中两个参数的类型都是Int,返回类型是Int 也可以做如下简化 fun sum(a: Int ...

  4. Kotlin基本语法和使用技巧

    基本语法 val value: String? = "HelloWorld" val name: String = getName() ?: return //如果是null就re ...

  5. Kotlin 基础语法

    Kotlin 文件以 .kt 为后缀. 包声明 代码文件的开头一般为包的声明: package com.runoob.main import java.util.* fun test() {} cla ...

  6. Kotlin 基本语法

    常量 val a: Int = 5 变量 var a: Int = 5 Any:匹配任何类型 ?:nullable,比如 a?.toString,如果 a 为 null 不会出错. 函数基本结构 fu ...

  7. Kotlin基本语法笔记3之定义类、继承及创建实例

    定义类 class MyObject private constructor(name: String, age: Int) { private var name: String private va ...

  8. Kotlin基础语法:变量、函数、类、枚举、控制流

    一切都需要从基础学起! 前言: 在Kotlin语言中,没有分号的概念了,也就是每一行代码,都不在需要用分号结束了 点击查看代码 定义 常量:val --相当于java当中的final 变量:var 关 ...

  9. Kotlin基本语法笔记2之类型检测及自动类型转换、循环

    类型检测及自动类型转换 is运算符用于检测一个表达式是否为某类型的一个实例检测出为某类型后,检测后的分支中可以直接当作该类型使用,无需显示转换 fun getStringLength(obj: Any ...

随机推荐

  1. PHP实现类似于MySQ L的group by 效果

    简单版本:只用于获取组数据 其实就是将键值变成键,遍历的时候键相同的会覆盖 $res[$v['country']] [] 可以 = 1,无关紧要

  2. 使用MyEclipse生成实体类和Hibernate映射文件

    1.打开MyEclipse DataBase Explorer. 如上图,点击图中2便可切换到MyEclipse DataBase Explorer,若没有该图标,则点击图中1,便可选择MyEclip ...

  3. CompletionService 简介

    以下是jdk关于CompletionService的简介: public interface CompletionService<V> 将生产新的异步任务与使用已完成任务的结果分离开来的服 ...

  4. @PathVariable和@RequestParam的区别,@SessionAttributes

    简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类: A:处理requet uri部分(这里指uri template中variable,不 ...

  5. 【JAVAWEB学习笔记】24_filter实现自动登录和解决全局的编码问题

    过滤器Filter 学习目标 案例-自动登录 案例-解决全局的编码 一.过滤器Filter 1.filter的简介 filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标 ...

  6. MySQL 主从复制与读写分离概念及架构分析 (转)

    1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...

  7. 日志组件二:log4j2

    一.背景 随着业务服务(Server App)逐渐增加,我们的业务系统中的日志输出面临的问题越来越多,高并发下对磁盘io这块消耗的越来越大,因此,急需要一个高性能且最好能够支持异步输出日志的日志框架, ...

  8. Not supported by Zabbix Agent & zabbix agent重装

    zabbix服务器显示一些监控项不起效,提示错误[Not supported by Zabbix Agent], 最后定位为zabbix客户端版本过低. Not supported by Zabbix ...

  9. data.table包简介

    data.table包主要特色是:设置keys.快速分组和滚得时序的快速合并.data.table主要通过二元检索法大大提高数据操作的效率,同时它也兼容适用于data.frame的向量检索法. req ...

  10. JavaScript Style Guide中文总结

    github原址:https://github.com/airbnb/javascript 类型*基本类型:包括string.number.boolean.null.undefined,存储的是值本身 ...