我是靠谱客的博主 整齐小丸子,这篇文章主要介绍Kotlin语言学习笔记一,现在分享给大家,希望可以做个参考。

一、学习Kotlin好处

1.1、为什么要学习kotlin?

  • java语言比较稳健,久经考验,有庞大的生产代码库。然而,java裹足不前,开发者喜欢的很多现代语言高级特性,它都没有,或者迟迟加入。

  • kotlin从这些经验中受益良多,而java中的某些早期设计却越来越陈旧。脱胎于旧语言,kotlin解决了很多痛点,进化成一门优秀的语言。相比java,kotlin进步巨大,带来了更可靠的开发体验。

  • 最重要的一点,google推崇kotlin,将kotlin定性为android主要开发语言,很多优秀的开源源码库均是由kotlin编写并维护。

1.2、kotlin的跨平台特性

  • kotlin不仅支持编写代码在虚拟机上运行,而且是一门跨平台的通用型语言,我们可以用kotlin开发各种类型的原生应用,如Android,macOS,Windows,Javascript应用。

  • kotlin能脱离虚拟机层,直接编译成可以在Windows,LInux和macOS平台上运行的原生二进制代码。

二、Kotlin语言声明变量与内置数据类型

复制代码
1
复制代码
1
2
3
4
5
6
fun main(){ printlin("Hello World") //如何声明一个变量 var name : String = "xiebin" //和java语言对比 //private String name = "xiebin" println(name) // 对比: Java 把数据类型写在了变量前面,而kotlin 把数据类型写在了变量后面。 }

var name : String = ""

可改可读 变量名 变量类型 变量赋值

2.1、数据类型

Java的两大基本数据类型

1、内置数据类型:

  八大基本数据类型:六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

   byte short int long float double boolean char

2、引用数据类型:

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。

  • 对象、数组都是引用数据类型。

  • 所有引用类型的默认值都是null。

  • 一个引用变量可以用来引用任何与之兼容的类型。

  • 例子:Site site = new Site("Runoob")。

  • String 属于引用数据类型,并不属于基本数据类型

kotlin的数据类型

 

kotlin的数据类型都属于引用数据类型

思考:既然kotlin都用的是引用数据类型,那么会不会对性能有影响

答:不会,因为编译器在编译kotlin的时候,会把代码转变成字节码的形式,在转换后,kotlin的引用数据类型都会转换成Java的基本数据类型。

2.2、kotlin语言只读变量val

var 标识变量可读可改

val 标识常量量只可读不可改

const (编译时常量)只能用来修饰val, 并且Const 修饰的val只能定义在top level或者在objects中。top level指的是在最外面的类的外面,表示该常量属于整个文件,而非某个类。object可以指最外面的object和companion object。

编译的字节码:

Var 定义的变量是private的,并且会生成public的get和set方法。

Val 定义的常量是private的,并且会生成public的get方法。

Const val 定义的常量生成的字节码是由 public final static 来修饰。

2.3、kotlin 语言类型推断

复制代码
1
复制代码
1
2
3
4
5
6
7
fun main(){ var name:String = "xiebin" //也可以写成 var name = "xiebin" var age = 18 //这样也能运行,说明kotlin语言在进行编译的时候,有类型推断功能。能够自行推断出数据类型 //字符串模板 println("我的名字是$name 年龄$age") }

三、kotlin语言函数表达式

3.1、kotlin的range表达式

复制代码
1
复制代码
1
2
3
4
5
6
7
8
9
fun main(){ val number = 10 if(number in 0..10){ println("数字在0-10之间") }else if(number in 11..50){ println("数字在11-50之间") } }

Range

正向:start..end 从哪里 到 哪里

反向:end downTo start

复制代码
1
复制代码
1
2
3
4
5
6
7
8
9
10
fun main(){ for(i in 0..10){ println(i) } //输出 0 1 2 3 4 5 6 7 8 9 10 for(y in 10 downTo 0){ println(y) } //输出 10 9 8 7 6 5 4 3 2 1 0 }

3.2、kotlin的when表达式

when表达式相当于Java中的switch语句,但是when表达式更加强大

复制代码
1
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fun main(){ val number = 4 val star = when(number){ 1-> println("这个数字是1") 2-> println("这个数字是2") 3-> println("这个数字是3") 4-> println("这个数字是4") else -> print("没有这个数字") } var str = when(number){ 1->"aaaa" 2->"bbbb" 3->"cccc" 4->"dddd" else->"nonono" } println(str) println(star) }

上面代码块和Java中的switch一个意思,但是when表达式还有返回值

复制代码
1
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
fun main(){ val number = 2 val str = when(number){ 1->"这个数字是1" 2->"这个数字是2" 3->"这个数字是3" 4->"这个数字是4" else ->"没有这个数字" } println(str) //输出这个数字是2,说明when表达式返回了字符串”这个数字是2“ //这里也存在类型推断,我们写的是String,返回值推断出来的就是String }

那么,如果我们返回值是不是一个数据类型,那么会出现说明情况呢

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
fun main(){ val number = 4 val str = when(number){ 1-> println("这个数字是1") 2-> println("这个数字是2") 3-> println("这个数字是3") 4-> println("这个数字是4") else -> print("没有这个数字") } println(str) //输出kotlin.Unit unit 相当于java的void }

3.3、函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
fun main(){ loginMethod("xiebin","123") //kotlin中的具名函数参数 loginMethod(userName = "xiebin",password = "123") } fun loginMethod(userName:String , password:String){ println("我的名字是$userName 我的密码是$password") } //写一个比较完整的方法 private fun login(name: String, password: String): String { return name+password } //和Java不同的是,在写方法的参数的时候,Java的类型在左边,但是kotlin的类型在右边 //返回值,java的返回值在方法名前面,kotlin在参数后面 //kotlin 在方法中 是可以配置默认参数的 private fun login2(name: String ="xiebin2", password: String="密码"): String { return name+password }

3.4、匿名函数(重点)

匿名函数:顾名思义 就是没有名字的函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fun main(){ //匿名函数,先看效果 val name = "Brad" //Returns the length of this char sequence. 方法返回此字符串的字符长度 val count = name.count() println(count) //输出4l //根据源码可以看出,此方法还是返回 int ,但是后面有个大括号。这个就是匿名函数,大括号内部,是把字符串遍历成char,内部返回值是boolean val name2 = name.count { println(it) it == 'r' } }

3.5、隐式返回函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fun main(){ //函数参数 val login2:(Int,Int,Int) -> Boolean = {number1,number2,number3-> true } } //正常函数 fun login():Boolen{ return true } //隐式返回函数 //输入 输出声明, val login:() ->Boolen = { true //隐式返回 最后一行为隐式返回 }

3.6、匿名函数类型推断

复制代码
1
2
3
4
5
6
7
8
9
10
11
fun main(){ //匿名函数 //1 方法名:参数->返回值类型 = 函数 //2 方法名 = 函数 (会自动进行类型退到) val login3 = {number1:Int,number2:Int,number3:Int -> number1+number2+number3 } println(login3(1,2,3)) }

3.7、在函数中定义参数是函数

函数中定义参数是函数,这个和java中的接口回调有一定的相似。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fun main() { val name = "xiebin" val password = "123" //这里定义一个匿名函数 val response = { reMsg: String, reCode: Int -> println("返回message是$reMsg 返回的code是$reCode") } login(name,password,response) } private fun login(name: String, password: String,serviceResponse:(String,Int)->Unit): Boolean { if (name=="xiebin"&&password=="123"){ serviceResponse("登录成功",200) return true }else{ serviceResponse("登录失败",400) return false } }

最后

以上就是整齐小丸子最近收集整理的关于Kotlin语言学习笔记一的全部内容,更多相关Kotlin语言学习笔记一内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部