基本类型

在Kotlin中任何事物都是对象你可以在任何变量上调用相应的方法或属性。Kotlin的一些内置类型如下:

  • Number: 包含整形与浮点型
  • Character: 字符(Chat)
  • Boolean: 布尔值
  • String: 字符串
  • Array: 数组

在Kotlin内置的类型个人觉得更加像Java中的一些包装类,如果在学习之前将思维转换成Java包装类的思想我觉得学起来更容易理解一些。当然它们还与Java多少有些不同。

Number类型

Kotlin包含如下number类型:

  • Double
  • Float
  • Long
  • Int
  • Short
  • Byte

怎么样有没有感觉跟Java里面的java.lang.Double、java.lang.Long这些包装类差不多用起来也差不多。还有在Kotlin的数字常量可以用十进制、十六进制、指数形式小数、二进制但是没有八进制。Kotlin中是没有自动向上转型的。

   //内置数据类型
var d: Double = 64.0
var i: Int = 32
var l: Long = 64
var f: Float = 32.0F
var b: Byte = 8
var s: Short = 16 //数字常量
i = 1 //十进制
i = 0x1 //十六进制
i = 01 //八进制不允许
i = 0b00000 //二进制
d = 1.2E10 //指数形式
f = 1.2E10F //没有自动向上转换
l = i //Int不能自动转换成Long
d = f //同样Float也不能自动转换

不过上面说了Kotlin中任何事物都是对象那么我们可以调用相应的方法来显示转换。

    var i: Int = 5;
var l: Long = i.toLong();

字符类型

字符类型在Kotlin中用Char来表示,它不能直接去应用一个number类型如var ch: Int = 'c'是错误的必需要显示的转换var ch: Int = 'c'.toInt()同样Char也支持转意字符\n、\b、\r等跟Java中的差不多。

数组

在Kotlin数组分为基本类型的数组和其他类型数据,基本数组类型是指数组中的元素类型都是基本数据类型如: Int、Long、Floa这些类型的数组在Kotlin中分别用IntArray、LongArray、FloatArray来表示可以通过Kotlin内置的方法来创建<*>ArrayOf(values)里面的*号代表具体的元素类型。

    var intArray: IntArray = intArrayOf(1, 3, 4);
var longArray: LongArray = longArrayOf(1L, 2L)

其他类型的数组可以使用Array通过传入大小与生成对象的方法来创建数组。

    var str: Array<String> = Array(5, { index -> index.toString })

字符串

字符串用String表示同Java一样是不可变的同样内部也用字符组成,访问内部字符可以通过s[i]和循环来遍历。


var hello: String = "HelloWorld" for(index: Int in 0..hello.length - 1){
println(hello[index])
} for(ch in hello){
println(ch)
}

字符串可分为能够转意一些特殊字符的字符串和原始的字符串。

    var text1: String = "Hello\tWorld"
var text2: String = """
Hello\bWorld
""" println(text1)
println(text2)

text1中\t会转间成一个制表符但在text2不但\b不会转意且任何内容都会照样输出。原始字符串类似XMl中的CDATA。字符串中可以使用模版,就像Java中的String.format的一样但在Kotlin中使用$号开始后面可以加变量名来替换内容。

    var name: String = "Kotlin";
var greet: String = "Hi, $name";
println(greet)

学习总结

学习Kotlin时免不了要与Java比较但Kotlin更像类似Swift,看IOS同事写Swift后学习了Kotlin的基本类型后感觉太相似了。说实话还是比较喜欢Java这种强类型的语言也许是用了几年不太适应吧。既然开始了一定要坚持学下去不能落伍。本人水平有限可能免不了手滑一下如有错误烦请指出,会即时更改。



《架构文摘》每天一篇架构领域重磅好文,涉及一线互联网公司应用架构(高可用、高性 能、高稳定)、大数据、机器学习等各个热门领域。

Kotlin学习系列(一)的更多相关文章

  1. Kotlin学习系列(三)

    类声明 Kotlin使用class关键字声明类: class Invoice{ } Kotlin类声明基本包括header与body: [<Modifier>] <class> ...

  2. Kotlin学习系列(二)

    IF表达式 if在kotlin可以当做表达式使用跟java的三元操作符类似: var max = if( a > b ) a else b if分支可以使用代码块,最后一个表达式是返回值: va ...

  3. Kotlin学习笔记(9)- 数据类

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...

  4. Kotlin Tutorials系列文章

    Kotlin Tutorials系列文章 想写一个有实用价值的Kotlin笔记, 让一线开发一看就懂, 看完就能上手. 当然官方文档更有参考价值了. 这个系列相对于官方文档的大而全来说, 最主要优势是 ...

  5. 分布式学习系列【dubbo入门实践】

    分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...

  6. Entity Framework Code First学习系列目录

    Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012, ...

  7. WCF学习系列汇总

    最近在学习WCF,打算把一整个系列的文章都”写“出来,包括理论和实践,这里的“写”是翻译,是国外的大牛写好的,我只是搬运工外加翻译.翻译的不好,大家请指正,谢谢了.如果觉得不错的话,也可以给我点赞,这 ...

  8. EF(Entity Framework)系统学习系列

    好久没写博客了,继续开启霸屏模式,好了,废话不多说,这次准备重新系统学一下EF,一个偶然的机会找到了一个学习EF的网站(http://www.entityframeworktutorial.net/) ...

  9. MVC学习系列4--@helper辅助方法和用户自定义HTML方法

    在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...

随机推荐

  1. C++ socket bind()函数报错 不存在从 "std::_Binder<std::_Unforced, SOCKET &, sockaddr *&, size_t &>" 到 "int" 的适当转换函数

    昨天还可以正常运行的程序,怎么今天改了程序的结构就报错了呢?我明明没有改动函数内部啊!!! 内心无数只“草泥马”在奔腾,这可咋办呢?于是乎,小寅开始求助于亲爱的度娘...... 由于小寅知识水平有限, ...

  2. Socket I/O模型之select模型

    socket网络编程中有多种常见的I/O模型: 1.blocking阻塞 2.nonblocking非阻塞 3.I/O multiplexing复用 4.signal driven 5.asynchr ...

  3. SpringBoot第二十四篇:应用监控之Admin

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   前一章(S ...

  4. Python AttributeError: 'Module' object has no attribute 'STARTF_USESHOWINDOW'

    夫学须志也,才须学也,非学无以广才,非志无以成学.--诸葛亮 生活有度,自得慈铭 --杜锦阳 今天新来的同事安装环境遇到个莫名其妙的问题: AttributeError: 'Module' objec ...

  5. 大型互联网公司分布式ID方案总结

    ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并 ...

  6. SDU暑期集训排位(9)

    SDU暑期集训排位(9) G. Just Some Permutations 基础 DP 练习部分 定义 \(f(S)\),表示让 S 中的人全 happy 的方案数. \(dp[i][j]\) 表示 ...

  7. CF - 1131 D Gourmet choice

    题目传送门 先把 = 的人用并查集合并在一起. 然后 < > 的建边, 跑一遍 toposort 之后就好了. 入度为0点的值肯定为1, 然后就是因为这个是按照时间线走过来的,所以一个点的 ...

  8. (六十)c#Winform自定义控件-鼓风机(工业)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  9. 2018web前端面试总结

    从今年3月份开始面试笔试找实习找校招到现在也半年多了,拿到了不少offer,也有了自己的一点心得体会,这里写出来分享一下,拙见勿喷. 注意一下,以下的观点仅代表我个人的体会不代表任何人任何组织和任何公 ...

  10. openlivewriter安装配置

    一.前言 最近工作比较忙,同时也在构思下面我应该写哪方面的文章.上一篇文章,我直接在博客园管理后台自带的编辑器写的,确实比较麻烦,于是我就打算使用官方推荐的客户端“Open Live Writer”. ...