kotlin特色菜

作者: 绮怀先生 | 来源:发表于2018-04-04 18:23 被阅读237次

    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]
    

    相关文章

      网友评论

        本文标题:kotlin特色菜

        本文链接:https://www.haomeiwen.com/subject/lfllhftx.html