android kotlin基础(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34900897/article/details/82702225

虽然已经用kotlin写了两个项目了,但还是在空闲的时刻,看了一下官网API关于kotlin的资料加深印象,重新稳固一下,从零到还能知道怎么应用,复习一下,之前写的有什么问题,废话不多说了,开始吧(备注,很多的东西都是根据翻译的东西而来)

语句和表达式:

fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}

>>> println(max(1, 2))

kotlin的方法都是从fun 开始的java是先定义修饰词,再定义变量,而kotlin是先定义变量再定义修饰词(中间加了冒号!)java无返回值是void 而kotlin什么都不用写,java有返回值就把void改下就好,而kotlin只需在括号后面加需要返回的类型(也是加了冒号)

再看看 if (a> b) a else b 这个就是java的一般if {}else{}嘛 ,而kotlin却是一个三目运算,比较

java中的语法
条件判断语句 ? "结果为true" : "结果为false";
kotlin中的语法
if(条件判断语句) "结果为true" else "结果为false"

有点奇怪,,不过没法,只好记住了。

变量

在Java中,可以使用类型启动变量声明。这不适用于Kotlin,因为它允许您从许多变量声明中省略类型。因此,在Kotlin中,以关键字开头,您可以(或不)将类型放在变量名称之后。

val a = "a"

val a: String? =null

lateinit var a:String

而lateinit var a:Int //会出现报错问题(lateinit不能与基本类型一起使用)

lateinit:

1.修饰的变量与属性不能是原始数据类型 

2.会被初始化很多次

3.lateinit只能与var 一起连用

讲到这里必须得讲var 和val 

var 修饰的可变 可以重新分配一个值,与java声明变量一样

var 修饰的不可变 与java final一样,创建的时候必须初始化,并且以后的值不可改变。

接着上面第二定义的string有个 val a: String?= null  有个?表示,这个变量可为null,kotlin在这里处理了一下,相比java提前做了null处理,讲到这里不得不将(!!),双叹号,表示该修饰的类型不能为null, 加入服务端,给你这个字符串传了一个null

o(* ̄︶ ̄*)o呵呵,,你懂的

结果就知道了,有些时候用到kotlin会觉得奇怪,为什么定义了var ss?= null ,后面用到这个变量的时候,必须要加!!,不然编译不通过,就如刚刚说的,这个时候如果服务端传个null,不就爆了,我这里有两个方法,,

1.用lateinit,先初始化,不用空判断,但要慎用,也会出问题,

2.提前判null就好了。(if ss == null)return 

更简单的字符串模版

package ch02.ex1_4_1_StringTemplates

fun main(args: Array<String>) {
    val name = if (args.size > 0) args[0] else "Kotlin"
    println("Hello, $name!")
}

在字符串里面添加一个${}大括号里面显示数据,免去了一个+号或者多个使用+问题 甚至可以在里做判断

fun main(args: Array<String>) {
    println("Hello, ${if (args.size > 0) args[0] else "someone"}!")
}

类和属性

用过java的都知道是面向对象编程:

/* Java */
public class Person {
    private final String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

kotlin中

class Person(val name: String)

就这么简单,java有快速生成类工具,那么kotlin肯定也有了在setting->plugins -> Install plugin from 输入Kotlin data 可以看到Generate kotlin data class from JSON 安装就行了。但会自动生成data class()这种,这个data 是什么意思呢?

data class就是一个类中只包含一些数据字段,类似于vo,pojo,java bean。一般而言,我们在Java中定义了这个数据类之后要重写一下toString,equals等方法。要生成get,set方法。

然而在Kotlin中这些都不在需要自己手动去敲了,编译器在背后默默给我们生成了如下的东西

  • equals()/hashCode()
  • toString()方法
  • componentN()方法
  • copy()方法

也可以去掉data ,因为kotlin自动get、set了。

区间 ..

区间是以两个点点表示。

for (i in 1..5) print(i) // 输出“1235” // 等同于 1 <= i && i <= 5
// 使用 step 指定步长
for (i in 1..4 step 2) print(i) // 输出“13”

for (i in 4 downTo 1 step 2) print(i) // 输出“42”


// 使用 until 函数排除结束元素
for (i in 1 until 10) {   // i in [1, 10) 排除了 10
     println(i)
}

猜你喜欢

转载自blog.csdn.net/qq_34900897/article/details/82702225