kotlin特色菜

kotlin配置

//项目build.gradle
buildscript {
    ext.kotlin_version = '1.1.51'//自主选择版本
    repositories {
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        //AS有新版本会自动在这里提示
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_vers
    }

}
//module中
apply plugin: 'com.android.application'

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


kotlin特点

特点1:不用findview,直接用,非常爽

不夸张的说,极大提高开发效率,就算是butterknife+配合Android ButterKnife Zelezny插件也需要几个步骤.个人觉得butterknife已经是被淘汰的库了

import kotlinx.android.synthetic.main.activity_try_kotlin.*

class TryKotlinActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_try_kotlin)
        //直接用view的id
        test_tv.text = "test"
    }
}
<!--activity_try_kotlin.xml-->
<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/test_tv"
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>


特点2:点击事件代码精简:去你的匿名类
 button.setOnClickListener { button.text="点击事件处理" } 
特点3:没有烦人的";"

代码结尾不需要加上";"之前java代码中总是需要按一下补全代码快捷键,神烦~

特点4:极大消灭了空指针

因为kotlin编译时就会判空,只要自己不作死,基本上跟空指针说拜拜了

以字符串为例

//java字符串判空
if (str!=null && str.length()>0 && str.trim().length()>0) {  
    ......  
}  
var length:Int = 0

val strA:String = "非空字符串"  
 
length=strA.length //不用判空,这样写没有毛病

val strB:String? = null  
//length=strB.length 编译不会通过,因为strB可能为空,会扔出空指针异常  
length = if (strB!=null) strB.length else -1 

//语法糖  ?.  ?:
var length_null:Int?  
//?.表示对象为空时就直接返回null,所以返回值的变量必须被声明为可空类型 
length_null = strB?.length  //strB?.length 等价于  if (strB!=null) strB.length else null

//?:表示为空时就返回右边的值,即(x!=null)?x.**:y  相当于三目运算符
length = strB?.length?: -1  

//如果百分百保证strB非空  运算符“!!”强行放弃了非空判断  通知编译器不做非空校验,运行时一旦发现实例为空就扔出异常
length = strB!!.length  

val strC:String? = "可空字符串"
//即使strC实际有值,也必须做非空判断,谁叫它号称可空呢?编译器宁可错杀一千、不可放过一个  
length = if (strC!=null) strC.length else -1  

特点5:转换现有java代码,无缝切换到kotlin
一键转化kotlin

其他

基本数据类型声明以及转换
//java
Int i=0; 
//kotlin 其他数据类型声明,以此类推
val origin:Float = 65.0f 

//类型转换 
var int:Int = origin.toInt();

//判断是否为空
var isNull:Boolean = origin.isNaN();

声明与操作数组

//java
String[] string_array = new String[] {"zero", "one", "two"};
//kotlin 

//基本变量类型数组
var long_array:LongArray = longArrayOf(1, 2, 3)  
//对象类型数组
var string_array:Array<String> = arrayOf("zero", "one", "two")  

//获取数组长度
var size:Int = string_array.size
//获取数组元素
var str:String = string_array[0]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容