kotlin学习(一)kotlin的基本句法语法

前言

最近google举行的开发者大会,将kotlin作为android开发的第一语言,当然大家都知道为什么,oracle因为android用java的原因,一直告google侵权要求赔偿,google在android7.0的时候甚至直接换成了openjdk。

学习kotlin的原因

当然,我并不觉得第一语言换成kotlin就不用好好学习java了,虽然kotlin与java100%互通,但是android的源码都是java写的,如果要阅读android源码的话,还是要好好学java的。那么为什么要学习kotlin呢,上个项目用java起码写了2w+行代码,我确实感觉到的java要写的代码太多了,看起来复杂好多,所以一接触到kotlin,看到它简单的语法和并且也能直接进行adnroid开发的时候,我就觉得还是有必要学习这门语言的。

学习kotlin的目标

对kotlin的学习,我希望的还是能把它融入到android的开发中,不管公司以后需不需要,我平时自己练手的时候还是可以用到的,希望这段时间对kotlin的学习可以让我能够熟练的运用这门语言进行android开发吧。

kotlin基础

目前因为国内kotlin的资料还不是很多,因此学习的方式也就是常规的几种–官网,视频和书籍。当然我这里也有一套kotlin的教学视频,百度云地址是:kotlin视频。我是通过阅读官网的官方文档进行学习的,我感觉这样会更全面,理解也会更加深入。下面介绍kotlin环境的配置及kotlin的基本用法。

1.kotlin开发环境的配置

我这边是在idea上进行kotlin的开发的,首先点击File—>Setting,进入设置界面:
这里写图片描述

然后进入plugins,搜索kotlin,就可以看到如下界面了:

这里写图片描述

我这里是安装过的,没安装过的点击右边的install等待插件安装好重启idea就好了,创建一个新的kotlin项目,就可以进行kotlin的编写了

这里写图片描述

2.kotlin的基本用法

在项目里新建一个kotlin文件,就可以开始kotlin的学习了。
(1)kotlin的方法声明:
kotlin是函数式编程,可以有类也可以没有类,方法可以直接在外部声明调用也可以在类里面调用。例如一个两个数相加的方法:

fun sum(a: Int, b: Int): Int {
    return a + b
}

kotlin的参数是需要做类型声明的,只是声明方式和java 有点区别而已,还有返回值,有的话可以在方法的()结尾加上:对应的数据类型,来声明返回值是什么类型,如果返回的是无意义的内容(即没有返回值)时,可以申明如下:

fun printSum(a: Int, b: Int): Unit {
    println("sum of $a and $b is ${a + b}")
}

加上Unit,就相当与void,也可以不加,默认就是没有返回值的。
当然,上述的两个数相加的方式还有更简单的方法:

fun sum(a: Int, b: Int) = a + b

这样直接在方法的()结尾为方法赋值,这样看起来代码简洁了很多。

(2)kotlin变量的声明:
kotlin变量声明的关键字有两种:val和var
val:表示不可变变量,一般用来表示变量的值
var:表示可变变量,一般用来表示可以变的变量

变量的声明有以下几种写法

val a=3

var b="hehe"

b="cc"

val c:Int =3

像上面那样,var类型的可以更改,而val类型的你更改编译器就会报错,声明的时候可以带上数据类型也可以不带。

(3)string模板的使用:
在kotlin中,字符串里面可以用类似jquery的写法直接获取变量的值
例如:

var a = 1

val s1 = "a is $a" 

a = 2

val s2 = "${s1.replace("is", "was")}, but now is $a"

运行的结果是:

a was 1, but now is 2

(4)kotlin里的条件判断
条件判断语句在各个语言里大同小异

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

也可以用下面这种更简洁的写法:

fun maxOf(a: Int, b: Int) = if (a > b) a else b

(5)kotlin里的非空校验
kotlin里对空类型的检查十分严格,只有在声明方法返回值参数后面加上‘?’的方法才能返回空,所以不用像java那样频繁的做空类型检查

fun parseInt(str: String): Int? {
    // ...
}

像以上这种声明的方法才可以返回null,没有像这样声明的方法返回null编译器也是会报错的。

(6)kotlin里的循环和list
要列一组list的值并且遍历打印它,代码如下:

 val items = listOf<String>("苹果", "香蕉", "橘子")
     for (item in items) {
         println(item)
     }

也可以这样

for (index in items.indices) {
    println("item at $index is ${items[index]}")
}

用while循环遍历

var index = 0
while (index < items.size) {
    println("item at $index is ${items[index]}")
    index++
}

when的循环遍历方式

fun describe(obj: Any): String =
when (obj) {
    1          -> "One"
    "Hello"    -> "Greeting"
    is Long    -> "Long"
    !is String -> "Not a string"
    else       -> "Unknown"
}

(7)kotlin对范围的使用
kotlin对那种包含在什么范围内给了简答的写法,比如1<=x<=10
以前在java中是这么写的

 if(x>=1&&x<=10)

在kotlin中有更加简便的写法

    val x=10;

    if(x in 1..x){
        println("this is in range")
    }else{
        println("this is out of range")
    }

即上面的 x in 1..10,表示的就是1<=x<=10。

在循环中遍历也可以加上这样的范围判定,而且不用声明x

for (x in 1..5) {
    print(x)
}

这样的结果就是

12345

step关键字
配合step使用就是这样子:

for(x in 1..10 step 3){
        print(x)
    }

结果是

14710

也就是说,step关键字表示的是除了能被后面跟着的数整除的数。

(8)kotlin的表达式

val items= listOf<String>("apple","苹果","香蕉")
items.filter { it.startsWith("a")}
            .sortedBy { it }.map { it.toUpperCase() }
            .forEach { println(it) }

上面的程序实际上是将首字母为a的 字符串全部转为大写,最终的结果是APPLE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值