Kotlin学习日记(一)Kotlin介绍与数据类型

之前就听说Kotlin的一些新的特性,一直感到好奇,最近打算学习一下,看看这门语言到底有什么神奇的地方和存在哪些坑。

入门之前怎么都得了解一下这东西是干什么的、有什么用,要不学来干嘛(๑•ᴗ•๑)

所以先了解一下这门语言的用途:

Kotlin的用途

  1. Kotlin Script可以用来写Kotlin脚本,Gradle3.0开始部分支持Kotlin脚本,尚在完善中。
  2. Java虚拟机应用:①Web应用,Kotlin完美支持 ②JavaFx,Kotlin完美支持
  3. 前端开发。在1.1版本正式支持Kotlin-JavaScript
  4. Android开发。
  5. Native程序。直接将Kotlin代码编译成机器码,不依赖Jvm,支持与C代码交互,目前功能有限

目前看来Kotlin能干的事真不少,也能称它为全栈语言,我想在未来这门语言完善了之后能更加出色。


详细的语法规则、使用及介绍可以浏览Kotlin官方文档,我这里先附上一个Kotlin中文文档:

http://www.kotlindoc.cn

这里我只记录一些需要注意的语法规则、常用的语法与知识点的概括和容易进坑的地方O(∩_∩)O。

Kotlin的特点

  1. 更易于表现
  2. 安全性更高
  3. 是函数式的,是面向对象的语言  
  4. 它可以拓展函数,可以拓展类的更多特性,即使我们没有权限去访问这个类中的代码
  5. 有高度相互操作性:kotlin和java代码可以相互调用,相互操作,可以实现混编
  6. 更简洁,最直观的是一行代码尾部可以不写‘;’了


Kotlin的基本数据类型

在 Kotlin 中,所有变量的成员方法和属性都是一个对象。一些类型是内建的,它们的实现是优化过的,但对用户来说它们就像普通的类一样。

举个例子:

一些基本类型integer,boolean,float仍然存在 但都是作为对象存在的 和java里面基本相似 但是转换的时候有所不同

在java中

int intV = 10;
long longV = intv;

在kotlin中 需要明确类型 并不支持隐式转换 比较严格
var intV:Int = 10
var longV:Long = intV.toLong()

Kotlin中的字符串

String模板
//字符串可以包含模板表达式,即可求值的代码片段,并将其结果连接到字符串中。
//一个模板表达式由一个 $ 和简单名称组成。
val i = 10  
val s = "i = $i" // 结果为 "i = 10"  
//一个模板表达式由一个$ 和大括号括起来的表达式组成。
val s = "abc"  
val str = "$s.length is ${s.length}" // 结果为 "abc.length is 3"  
//如果想输出$ ,需要怎么写。
${'$'}29.18  

//三引号的String模板 """

var msg:String = "666"
var str:String = """
    abc
    ///
    $$
    $msg
    """
println(str)
kotlin智能类型转换
普通转换 类似java类型转换
val sub:SubClass = parent as SubClass
安全的类型转换 转换失败也不抛异常
val sub:SubClass? = parent as? SubClass


字符串的新用法
var str : String = ”Example“
var c = s[2] //是字符‘a’
//迭代str
for(c in s){
print(c)
}


空安全符:?
val notNull : String = null 编译不通过
val notNull :STring? = null 指定notNUll可以是空的
notNull?.length() 在notNull对象不为空的情况下才可以打印

知道一个字符串一定不为空 需要直接调用一些方法的时候 编译器不通过 这是使用‘ !!’来告诉编译器可以执行

使用Elvis操作符给一个值是null的情况下的替代值
var value = notNull? : "empty"

比较符号
在java中比较两个字符串的值是否一样 需要 equal符号
String str = “ABC”;
String strOther = “ABC”;
if(str == strOther) 一定输出flase

在kotlin中
var str:String = “ABC”
var strOther:String = “ABC”
if(str == strOther)输入true
在kotlin中 == 相当于 equal
如果比较对象地址怎么办?
在kotlin中使用===来比较对象地址

变量于常量
变量 var 可以创建之后改变他的状态
常量 val 创建后不能改变他的状态 类似于final关键字 但是有区别 它的线程是安全的 可以减少代码出错的可能性
在kotlin中的一个重要的概念:尽可能的使用val 最大的原因是省内存
在定义变量时需要灵活运用var 与val,在数据类中
var与val之间的区别很大 具体是这里不过都的说明

var intVAlue = 100
val HELLO = "hello"
与java不同凡的是编译器认识的类型一律不用写

区间(Ranges)
java里面没有的概念 表示一个值的范围 
概念比较简单 看文档吧 n(*≧▽≦*)n

数组(Array)
实际上跟java里面的数组区别还是挺大的 使用上差不多
val arrayOfInt: IntArray = intArrayOf(1,3,5,7)
val arrayOfChar: CharArray = charArrayOf('H', 'e','l','l','o','W','o','r','l','d')
val arrayOfString: Array<String> = arrayOf("我", "是", "码农")
arrayOfInt[0] = arrayOfInt[1] + arrayOfInt[2]
详细的东西看文档吧

后记:
由于也是刚学习这门语言,可能会有错的地方,这篇文章如果有人看的话(并不会有ヽ(*。>Д<)o゜),请见谅,能帮我指正就更好了。
写的不是很详细,只是用于学过之后的总结复习,更具体的一些东西在Kotlin文档上有的详细的说明,详细的看文档就好。我这里记录的东西有些文档里面不一定会有,可能有些东西忘记了方便重新查阅。
感谢其他Kotlin大神的博客帮我查漏补缺!

这里附上一个可以用于练习Kotlin的连接:

https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值