Kotlin基础教程之数据类型

 更新时间:2017年05月27日 11:18:08   作者:天命剑主  
这篇文章主要介绍了Kotlin基础教程之数据类型的相关资料,需要的朋友可以参考下

Kotlin基础教程之数据类型

一切都是对象.

在Kotlin中一切都是对象.Kotlin有一些基本类型Boolean,Byte,Shot,Int,Long,Float,Double

在Kotlin中没有原始类型,以上这些类型都是对象,比如


运行结果如下


Kotlin支持16进制字面值,二进制字面值和科学记数法,官方文档中没有提到8进制

所有基本的几个数据类型不会进行显式类型转换,这一点尤为重要!那么如何进行转换呢?如下:

可以使用toLong,toInt,toShort,toChar等函数进行转换,不仅如此,数组Array<>也是对象,不但可以通过asList函数转换为List对象,数组类甚至包含了一个用于计算平均值的average函数.实际上Kotlin数组真的很像Collection(虽然Array并没有实现Collection接口).数组类还有其他很多函数,现在初学Kotlin还并不清楚用途.Kotlin毕竟太新,能找到的教程几乎只有一本英文的官方文档.(如果我能学完的话那么我的这些blog或许也能成为教程.)

我们还看到了一些有趣的东西,比如在字符串中使用${}进行替换,字符串中的代码会被执行,最后的结果被插入到字符串中,这一点简直和Unix Shell脚本里面的替换语法如出一辙,想来Kotlin也是受到了很多语言的启发.

这段代码运行结果如下

关于数组的初始化,也很有趣,如下:


前面已经说过了arrayOf()函数可以创建一个数组,Kotlin自动判断类型,比如x就是Array<String>类型,那么y是什么类型呢?

y最后会变成Array<Comparable<out Any?>>类型,Comparable是一个表示"可比较"含义的接口,Any代表任何类型,问号代表可以为null,虽然暂时看不懂,不过这并不影响.

除了arrayOf函数,还有intArrayOf,longArrayOf,doubleArrayOf等等函数

除此之外,Array有自己的构造函数,第一个参数是数组元素个数,第二个参数是一个lambda表达式或者说一个函数或者说一个迭代器(某种意义上可以看作一样东西),在Kotlin中一定程度上实现了统一.

lambda或者说迭代器在Kotlin中使用非常普遍,相信大家已经深有体会 :-) 经常看到默认的那个it(笑)

运行结果不出所料,如下

iterator从0开始哦!

i.plus(i) 等同于i+i,plus就是加法函数.Kotlin就是通过将操作符与函数进行绑定实现了操作符重载的功能(这个以后再看)

除了基本类型,数组类型,还有其他的类之外,Kotlin还有很多有趣的类型(当然他们都是对象),比如Range就是Kotlin中的一种极其有趣的类型,如下:


Range,顾名思义,就是一个范围,这个函数第一句代码定义x为IntRange类型(当然也存在DoubleRange,LongRange等),

根据1.rangeTo(5)我们可以猜测x就代表1到5这样一个范围,那么这样的范围有什么用呢?

很明显可以用在循环中(不是所有的Range都可以用在循环中,要想在循环中使用Range,必须实现iterator)

从for(a:Int in x) print("$a\t")一句我们可以看出,Range实际上可以用来限制循环控制变量的范围

这段代码输出如下

当然对于Kotlin这样追求简洁到极致的语言,使用val x:IntRange = 1.rangeTo(5)实在是太麻烦了,

你可以直接使用var y = 1..5 达到相同的效果,不仅如此,在for循环中a:Int 也可以简化为a

编译器可以自动判断数据类型,其实在前面的代码中所有的数据类型声明都可以省略,就像这样


大多数变量的类型,编译器会自动判断,我之所以把类型写出来是为了让诸位更容易看清楚代码.

如果你仔细发现的话,在Kotlin中还有很多简化代码的方法,尽量少敲键盘是这个语言很大的特点.

另外,这是我们第一次看到控制流(for循环),控制流的东西我打算留到后面,毕竟Kotlin的基本语法特性是在太多了(当然也是考虑到在控制流之前应该先了解操作符,毕竟Kotlin可是支持操作符重载的(笑)).

另外:在Kotlin中Unit类型相当于Java中的void,Unit有时也可以省略.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • 详解springboot中junit回滚

    详解springboot中junit回滚

    本篇文章主要介绍了springboot中junit回滚,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 基于JavaSwing+mysql开发一个学生社团管理系统设计和实现

    基于JavaSwing+mysql开发一个学生社团管理系统设计和实现

    项目使用Java swing+mysql开发,可实现基础数据维护、用户登录注册、社团信息列表查看、社团信息添加、社团信息修改、社团信息删除以及退出注销等功能、界面设计比较简单易学、适合作为Java课设设计以及学习技术使用,需要的朋友参考下吧
    2021-08-08
  • Java设计模式之外观模式的实现方式

    Java设计模式之外观模式的实现方式

    这篇文章主要介绍了Java设计模式之外观模式的实现方式,外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口,这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性,需要的朋友可以参考下
    2023-11-11
  • selenium操作隐藏的元素(python+Java)

    selenium操作隐藏的元素(python+Java)

    这篇文章主要介绍了selenium操作隐藏的元素(python+Java),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Java实现数组翻转的实现代码

    Java实现数组翻转的实现代码

    这篇文章主要介绍了Java实现数组翻转的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java实现简易界面通讯录

    Java实现简易界面通讯录

    这篇文章主要为大家详细介绍了Java实现简易界面通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • SpringBoot项目Docker部署三种方式

    SpringBoot项目Docker部署三种方式

    本文主要介绍了SpringBoot项目Docker部署三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Spring Security权限注解启动及逻辑处理使用示例

    Spring Security权限注解启动及逻辑处理使用示例

    这篇文章主要为大家介绍了Spring Security权限注解启动及逻辑处理使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 基于spring boot实现一个全局异常处理器

    基于spring boot实现一个全局异常处理器

    在项目开发中,我们可以基于spring boot提供的切面特性,来很轻松的实现全局异常的处理,所以本文主要为大家介绍了如何基于spring boot实现一个全局异常处理器,有需要的可以参考下
    2023-09-09
  • Springboot yml Map List读取方式

    Springboot yml Map List读取方式

    这篇文章主要介绍了Springboot yml Map List读取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论