Kotlin入门小知识

前言

前不久,kotlin的1.1版本正式发布啦。在当今的互联网时代,新技术犹如雨后春笋般层出不穷,我们为什么不花点时间来探究一下新的技术呢?

kotlin是神码东西?
  • Kotlin是JetBrains创造的基于JVM的语言,JetBrains是IntelliJ的缔造团队。而Android Studio又是基于IntelliJ而来的。
  • kotlin具有concise(代码简洁)safe(安全)versatile(多平台支持)interoperable(完全兼容java)的特点。
  • Kotlin 是一种面向对象语言。不过它支持高阶函数以及 lambda 表达式和顶层函数。
为什么要用kotlin

妈妈说它好用,就试试咯.

特点表现在哪里呢
  1. 简洁
    在java中定义一个bean业务类,代码如下:
public class Person {

    /**
     * 邮箱
     */
    private String email;
    /**
     * 年龄
     */
    private int age;
    /**
     * 昵称
     */
    private String nick;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getNick() {
        return nick;
    }

    public void setNick(String nick) {
        this.nick = nick;
    }
}

使用Kotlin,我们只需要通过数据类:

data class Person(var email : String, var age : Integer, var Nick : String)

这个数据类,它会自动生成所有属性和它们的访问器,以及一些有用的方法,比如,toString()

  1. 安全
    当我们使用Java开发的时候,如果代码写得不好或者说在各种情景中都会去判断属性是否为空,不然的话有可能会报NullPointerException,我们就需要在使用它之前不停地去判断它是否为null。Kotlin,是空安全的,因为我们需要通过一个安全调用操作符(写做?)来明确地指定一个对象是否能为空。
    我们可以像这样去写:
// 这里不能通过编译. name 不能是null
var notNullName: String = null
// 这里的 name 是可以为 null的
var nullName: String? = null
如何使用

说了那么多的性质特征,好像并不怎么爽,因为并没有亲自动手上马撸几发.

  1. 安装android studio 插件
    打开android studio , File -> Setting -> Plugins -> 搜索Kotlin -> 安装重启

  2. Gradle配置
    在app的gradle下加入如下代码

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

在project的gradle下加入如下代码

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0"
  1. 转换kotlin代码
    传统的java代码如何转换成kotlin代码呢,其实很简单,打开要转换的文件,然后选择Android studio的菜单栏中的code -> Convert Java File to Kotlin File ,OK了

  2. 开始使用
    在layout布局文件中新建一个layout,里面添加一个TextView标签

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/centerTextView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            tools:text="hello kotlin"/>
</RelativeLayout>

代码中如果要为这个TextView设置值的话,用java实现:

TextView  tvView = (TextView) findViewById("R.id.centerTextView");
tvView.setText("我是用java设置的值");

用kotlin实现:

centerTextView.text = "我是用kotlin设置的值"

是不是很爽,爽就对了。

再来简单的说说kotlin

  1. 首先来看看java中的类结构
// 普通的接口
public interface TestAction {
        void doSomething();
}
// 普通的Base
public class DemoBaseActivity extends Activity{}
// test
public class TestActivity extends DemoSuperActivity implements TestAction {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public void doSomething() {}
}

kotlin:

// 接口
interface TestAction {
    fun doSomething()
}
// 
open class DemoSuperActivity : Activity()
// 
class TestActivity : DemoSuperActivity(), TestAction {

    override fun doSomething() {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

恩,如你所看,java中的继承用extends关键字,接口用implements实现,而在kotlin直接用:就能代替其。
一般创建的类用class关键字,但是不能被继承,所以我们只能继承那些明确声明open或者abstract的类。

  1. 方法(函数)
    方法用关键字 fun 开头标识
fun add(x: Int, y: Int) : Int {
    return x + y
}

然而如果返回的结果可以使用一个表达式计算出来,你可以不使用括号而是使用等号:

fun add(x: Int,y: Int) : Int = x + y

如果没有返回值可省略,如:

fun print(x: Int, y: Int) {
    print(x+y)
}

好了,就写这么多吧,了解了基础就可以无限飞起来了啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容