kotlin优点(主要是代码简洁度)

1.避免空指针异常,其次在一个文件中java方法必须写在class里面,而kotlin则没要求

2.在同一个文件中,有class a则不允许在class外的方法(与class同一级别,也就是没写在class里的方法)同名  

3.可以没有;作为语句结尾

http://www.jianshu.com/p/1a23856bc749

基础语法

相等

  • 引用相等

      a === b    // a.identityEqual(b)
  • 结构相等

      a == b        // a?.equals(b) ?: b === null
  • For

    • in等价于foreach

        for ((k, v) in map) {
      println("$k -> $v")
      }
    • indices下标索引

        fun main(args : Array<String>) {
      for(i in args.indices) {
      print(args[i])
      }
      }
    • sizei()

        fun main(args : Array<String>) {
      var i = 0
      while(i < args.size()) {
      print(args[i++])
      }
      }

var代表变量;val代表常量

参数后面带有?代表可为空

创建对象直接 val user = User()就好

重写方法在fun前面override关键字java则是在上面有一个注解的@override

声明一个为空的对象作为变量

private var mTextMessage: TextView? = null
把一个对象转为子对象使用关键字 as
mTextMessage = findViewById(R.id.message) as TextView

万能的:

方法返回一个值,在方法的()后面加:以及返回的类型

例如返回布尔类型的

fun  a():Boolean{
return false
}
在类后面:xxx()这是继承或者实现一个另一个类
例如:class MainActivity : AppCompatActivity() {} 可以被继承的类需要在类前面使用open关键字,
被overite 的方法也需要在方法前使用open

OOP

  1. 默认都是final
  2. package import和java一致,如果出现导入报名冲突可以使用as

     import foo.Bar
    import bar.Bar as bBar

构造函数

  1. 主构造函数只有一个,是类头的一部分跟在类名后面

    • 主构造函数的参数

        class Person (firstName: String) {
      init {} // 主构造函数初始化代码
      } // 等价于
      public final class Person {
      public Person(String name) {
      // init{}
      }
      }
    • 主构造函数 + 属性

        class Person(val name: String, var age: Int) {}
      
        // 等价于
      public final class Person {
      private final String name;
      private int age; public Person(@NotNull String name, int age) {} // getter setter
      }
    • 如果一个类没有声明任何构造函数,将会生成一个不带参数的主构造函数

  2. 二级构造函数,使用constructor

     class Person(val name: String) {
    constructor(name: String, parent: Person): this(name) {}
    }
  3. 创建实例:没有<del>new</del>关键字,直接调用构造函数

     val person = Pserson("ss");

属性

要使用属性只需要使用名称引用即可,就相当于java中的public字段

继承:

所有类的共同父类Any,不属于java.lang.Object,没有任何成员变量,甚至没有equals()hashCode()toString()


普通类

  1. 继承的类有主构造函数

     open class Base(p: Int) {}
    
     class Derived(p: Int) : Base(p) {}
  2. 没有主构造函数,那么每个二级构造函数使用super或者委托给另一个构造函数

     class MyView : View {
    
         constructor(context: Context) : super(context) {
    } constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
    }
    }
  3. 父类的函数必标注open(去掉java中的final关键字)否则子类不允许定义同名函数;因此父类类头上也要标注open
  4. 函数必须加上override标注才能重写父类方法

抽象类 & 接口

单例

好像object 声明修饰的就是一个简单的单例模式
object SDKFactory {
fun say(name : String) {
println("hello ${name}")
}
}
SDKFactory.say("CatDog") // SDKFactory.INSTANCE.say("CatDog")
public final class SDKFactory {
public static final SDKFactory INSTANCE; private SDKFactory() {
INSTANCE = (SDKFactory)this;
} static {
new SDKFactory();
} public final void say(@NotNull String name) {
// ..
}
}

Kotlin来了的更多相关文章

  1. Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)

    作者:Antonio Leiva 时间:Jan 5, 2017 原文链接:https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式 ...

  2. 用Kotlin实现Android定制视图(KAD 06)

    作者:Antonio Leiva 时间:Dec 27, 2016 原文链接:https://antonioleiva.com/custom-views-android-kotlin/ 在我们阅读有关c ...

  3. Kotlin与Android SDK 集成(KAD 05)

    作者:Antonio Leiva 时间:Dec 19, 2016 原文链接:https://antonioleiva.com/kotlin-integrations-android-sdk/ 使用Ko ...

  4. Kotlin的android扩展:对findViewById说再见(KAD 04)

    作者:Antonio Leiva 时间:Dec 12, 2016 原文链接:http://antonioleiva.com/kotlin-android-extensions/ 你也许已厌倦日复一日使 ...

  5. Kotlin类:功能更强、而更简洁(KAD 03)

    作者:Antonio Leiva 时间:Dec 7, 2016 原文链接:http://antonioleiva.com/classes-kotlin/ Kotlin类尽可能简单,这样用较少的代码完成 ...

  6. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  7. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  8. Android的Kotlin秘方(II):RecyclerView 和 DiffUtil

    作者:Antonio Leiva 时间:Sep 12, 2016 原文链接:http://antonioleiva.com/recyclerview-diffutil-kotlin/ 如你所知,在[支 ...

  9. Android的Kotlin秘方(I):OnGlobalLayoutListener

    春节后,又重新“开张”.各位高手请继续支持.谢谢! 原文标题:Kotlin recipes for Android (I): OnGlobalLayoutListener 原文链接:http://an ...

  10. KOTLIN开发语言文档(官方文档) -- 2.基本概念

    网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2.   基本概念 2.1.  基本类型 从可以在任何变量处理调用成员函数和属性 ...

随机推荐

  1. wordCount的执行流程

    我们对于wordCount的这个流程,在清晰不过了,不过我们在使用spark以及hadoop本身的mapReduce的时候,我们是否理解其中的原理呢,今天我们就来介绍一下wordCount的执行原理, ...

  2. 20145202马超 《Java程序设计》第九周学习总结

    JDBC 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找. JDBC(Java DataBase Connectivity)是Java联机数据库 ...

  3. 3195: [Jxoi2012]奇怪的道路

    3195: [Jxoi2012]奇怪的道路 链接 思路: 因为一个点只会和它前后k个点连边,所以,记录下每个点的前k个点和它自己(共k+1个点)的状态,1表示奇数,0表示偶数. dp[i][j][s] ...

  4. 为什么rows这么大,在mysql explain中---写在去acumg听讲座的前一夜

    这周五下班前,发现了一个奇怪问题,大概是这个背景 一张表,结构为 Create Table: CREATE TABLE `out_table` ( `id` ) NOT NULL AUTO_INCRE ...

  5. 剑指Offer - 九度1507 - 不用加减乘除做加法

    剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包 ...

  6. USACO Section1.5 Superprime Rib 解题报告

    sprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  7. 架构师速成5.1-小学gtd进阶 分类: 架构师速成 2015-06-26 21:17 313人阅读 评论(0) 收藏

    人生没有理想,那和咸鱼有什么区别. 有了理想如何去实现,这就是gtd需要解决的问题.简单说一下gtd怎么做? 确定你的目标,如果不能确定长期目标,至少需要一个2年到3年的目标. 目标必须是可以衡量的, ...

  8. iOS笔记056 - UI总结02

    九宫格布局 UICollectionViewController 创建控制器一定要指定默认的布局样式. // 加载一个九宫格布局的控制器,必须指定布局样式 UICollectionViewFlowLa ...

  9. [译]10-Spring BeanPostProcessor

    Spring框架提供了BeanPostProcessor接口,该接口暴露了两个方法postProcessBeforeInitialization(Object bean,String beanName ...

  10. (原)Unreal渲染相关的缓冲区 及其 自定义代码几种抓取

    @authot: 白袍小道   转载说明那啥即可. (图片和本文无关,嘿嘿,坑一下)         以下为Unreal4.18版本中对GPUBuffer部分的分析结果 (插入:比之够着,知至目的) ...