当前位置:网站首页>【无标题】

【无标题】

2022-07-07 07:02:00 光阴剑客


前言

我毕业以来一直从事Android开发,并且使用的一直都是Java语言。大家都知道,自从oracle收购了sun公司后,Java也成了他们的囊中之物,慢慢的走向了收费的道路,可是你收费就收费吧,还把Google给告了,搞得我们这些用java开发android应用的人很慌张呀。要是他告赢了,我们是不是就失业了呀?这样的问题肯定那时候很多人都在想吧。可是我就一直不信邪,我觉得Google应该不会妥协吧。没想到后面Google宣布了Kotlin作为开发语言,我其实内心很是抵触,Java写的好好的,咋就突然换语言了呀。内心难受得一匹,虽然Java还仍然支持,但是害怕哪一天像当初Android Studio取代eclipse那样,到时候就尴尬了。我相信Google的工程师们肯定也很恼火。如下图,来自Google工程师的吐槽:
在这里插入图片描述但是大势所趋,我们要未雨绸缪,现在开始还不晚,有Java基础学习kotlin不是很难,多上手练练我觉得没啥大问题,废话不说了,开始学习吧。学习使我快乐。。。。。


一、Kotlin变量定义和使用

kotlin的变量定义格式:var 变量名 :类型名 = 值 或者
val 变量名 :类型名 = 值
例如:var name:String = "walt" 或者
val PI:Double = 3.1415926

其中,var 和val关键字的作用是,用var声明的变量是可以修改的,相当于Java中的一般的成员变量,而用val声明的变量是不可修改的,相当于Java中的final关键字修饰的变量。上面的例子中,你可以对name再进行赋值,如:
name = "zhongxj"
但是无法再对PI变量进行赋值

二、Kotlin内置数据类型

String字符串
Char单字符
Boolean布尔值
Int整型
Double双精度浮点型
Float浮点型
List集合
Set无重复的元素集合
Map键值对集合

三、编译时常量

编译时常量相当于咱们Java中的常量,定义方式为:

const val PI = 3.1415f

需要注意两点:
(1)编译时常量只能是常用的基本数据类型
String,Char,Boolean,Int,Double,Float

(2) 编译时常量不能写在函数内
原因是编译时常量是在编译时赋值,如果定义在函数内,就必须在运行时才能调用函数赋值,那时候就不叫编译时常量了。所以编译时常量只能在函数之外定义,这样就可以在编译期进行初始化了。

四、Kotlin的灵巧之美

(1)字符串模版输出
咱们可以先看下下面的代码:

val garden = "奥森公园"
    val time = 6
    print("去${
      garden}玩了${
      time}小时")//字符串模版
    //kotlin的if是表达式,可以更灵活,java 的是语句,有局限性
    val isLogin = false
    print("server response result:${
      if(isLogin) "登录成功" else "登录失败,检查请求信息"}")//字符串模版

我们在Java中需要用“+”拼接字符串的时代过去了,现在之间在字符串中写${变量名}就可以输出变量里面的内容啦,而且还可以用if表达式判断后做选择性输出

(2)Range表达式

   //range 范围 从哪里 到哪里
    if(number in 10..59){
    
        print("不及格")
    } else if (number in 0..9){
    
        println("不及格并且分数很差")
    }else if (number in 60..100){
    
        println("合格")
    }else if (number !in 0..100){
    
        println("分数不在0-100范围内")
    }

range表达式表示从“哪里到哪里的”意思,比如number in 0..9表示变量number在0-9范围内,包括0和9的时候条件为true

(3)when表达式

    val info = when(week){
    
        1->"今天天不错"
        2->"=看来要下雨"
        3->"今天天不错"
        4->"今天天不错"
        else->{
    
            println("躺平")
        }
    }

还需要注意的一点是,Java的if是语句,而kotlin的if是表达式,是表达式就意味着它有返回值,when表达式也是一样,所以上面的代码中info变量就是接收when表达式的返回值的,这时有人可能会问,when里面有String类型,也有{}代码块,最后返回的类型是啥呢?其实这时候会返回一个Any,相当于Java 中的object

五、Kotlin的函数

(1)函数的声明格式
kotlin的函数声明和Java的不太一样,kotlin的函数声明格式为:
修饰符 fun 函数名(参数名:类型,参数名1:类型1):返回类型
{

}

例如:

private fun method01(age:Int,name:String):Int{
    
    println("name:$name,age is $age")
    return 200
}

另外,kotlin的函数声明时可以像C++那样使用默认参数,如下:

private fun actiono2(name:String,age: Int = 18){
    
    println("name is $name,age is $age")
}

调用的时候可以actiono2(“walt”)不用传age,这时候使用的是默认的age,即18

kotlin函数还可以使用具名参数,例如:

private fun loginAction(username:String,password:String,phoneNum:String,age: Int){
    
    println("username:$username,password:$password,phonenum:$phoneNum,age:$age")
}

像这种参数很多的情况下,咱们调用的时候可能会出现传错参数的情况,但是使用具名参数就可以避免这个问题,因为在kotlin中可以像下面这样调用:

loginAction(age=99, username = "zhongxj", phoneNum = "1234", password = "123")//具名参数调用

好了,再来看看Nothing类型的特点

private fun show(number:Int){
    
    when(number){
    
        -1-> TODO("没有这种分数") //相当于抛异常,会终止程序
        in 0..59 -> println("不及格")
        in 60..70 -> println("优秀")
    }
}

这里的TODO(…)就是Nothing类型,它就相当于是Java中的抛出一个异常,如果show()参数传-1的话代码是无法编译通过的,这里的TODO,可不是咱们注释中的TODO:哦,这个地方需要小心一点

最后就是反引号函数了(反引号就是esc下面的那个键,点击就可以得到一个反引号)
例如:

private fun `登录功能20220706测试环境需求编码zhongxj`(name:String,pwd:String){
    
    println("模拟: name $name,pwd: $pwd")
}

意不意外,惊不惊喜,函数还可以这么整。这个其实是为了做测试使用。一般线上的代码都不会这么写,调用的时候像函数一样调用就可以了

`登录功能20220706测试环境需求编码zhongxj`("zhongxj","123")

总结

(1)kotlin的变量定义格式:var 变量名 :类型名 = 值 或者val 变量名 :类型名 = 值
(2)编译时常量只能是常用的基本数据类型
String,Char,Boolean,Int,Double,Float,并且编译时常量不能写在函数内
(3)声明函数:修饰符 fun 函数名(参数名:类型,参数名1:类型1):返回类型
{

}
*

其他的都在文中,多注意就可以啦,今天先写这么多,以后有缘咱们接着说。

原网站

版权声明
本文为[光阴剑客]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zxj2589/article/details/125648062