第三章 Kotlin基本语法

在学习Kotlin的过程中,我们会发现一些java中没有的有趣特性,如表现性,安全性,扩展性,函数支持lambdas等等,在后续章节中会慢慢提现。

上一章节,我们已经完成了hello world的创建,本节我们来看一下源代码,结构如下。

养成良好的编码习惯,功能分包,命名规范,格式化代码等等都是我们需要注意的地方。为方便后续功能扩展,我创建了BaseActivity,里面暂为空。

在MainActivity中增加一个Button按钮,并设置点击事件,触发吐司:

下面开始分析代码:

kotlin其中一个特点就是语句结尾无需使用分号,直接换行即可,类名、属性命名与java类似,使用驼峰。但不建议使用m开头定义属性。

line1-8:与java类似,不解释;

line9:继承BaseActivity,kotlin中没有java中的extends关键字,取而代之的是:,kotlin中新建的类默认是public final类型的,为了能让其他类继承,我们需要加上关键字abstract或open(BaseActivity),圆括号为默认构造方法,每一个被继承的类都必须提供构造方法;

line11:声明一个可变(var)对象btn,类型属于Button,值可为null,类似Java中的:

public Button btn = null ;

同样使用冒号表示具体类型,问好表示可null;

line12:注意到本行使用val表示不可变对象,类似java中final修饰的对象;

line13:等价于line12,kotlin会自动识别数据类型,可省略类型说明,但在实际应用中,最好指明数据类型,以免出现不必要的错误;

line15:重写onCreate方法,不同于java,Kotlin必须有override关键字,且方法定义使用fun,这一点类似JavaScript;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

line22:定义私有方法initView,无参,无返回值可省略,同样方法修饰符与java类似,有public,private,protected,默认不写(作用域有别于java,kotlin中为public final方法),特有的internal(模块(module)级别访问权限)。有参有返回值的公共方法定义如下:

//有返回值 Int,如果仅返回一个表达式可省略{}、return,使用=代替

// public fun add(a:Int,b:Int):Int=a+b

public fun add(a : Int, b : Int) : Int {

return a + b

}

//无返回值,Unit等同于java中的void

public fun equals(a : Int , b : Int) : Unit{

}

line23:获取Button按钮实例,由于声明btn时指定了对象类型,因此这里需使用as关键强转为Button对象,未声明类型则无需强转;

line24:按钮设置监听,区别于java不需要创建匿名内部类,直接使用lambda完成,!!表示对象非空否则抛出异常。kotlin的安全性特性能严格控制NullPointerException的发生,使用一个对象时,必须有安全操作符!!或?来指明一个对象是否非空或可能为空,实例代码:

btn!!.setText("test")  //btn非空

btn?.setText("test") //btn为空时不执行setText方法,成功避免空指针异常的发生

btn?:Toast.makeText(this@MainActivity,msg,Toast.LENGTH_SHORT).show() //btn为空弹出吐司提示

END。

小结:

1、类需使用open、abstract关键字修饰才能被其他类继承,默认为final,继承使用:左右分别为子类、父类(必带构造方法);

2、val、var定义属性,默认为public,可用:指定属性类型,;

3、方法定义,格式:修饰符 fun  xxx(x: 参数类型): 返回值类型{do something};

4、as关键字用法,强转;

5、?、?:、!!的合理使用可避免空指针异常;

6、lambda支持,代码使用{}括上,参数与函数体分别在->左右;

7、@符号用法:this@XXX,return@XXX 返回值;

更详细的使用,请继续关注后续章节内容。

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

推荐阅读更多精彩内容