大数据学习之Scala中数据类型(3)

Scala中的数据类型和Java数据类型完全一样,占用内存以及精度都完全一样,只不过很多数据类型比Java中的更加强大,而且都是首字母大写。
下图是Scala中的数据类型的描述:
这里写图片描述

在Scala中,所有的数据类型都是对象,没有私有类型。
例如:

var i= -1;

def main(args: Array[String]): Unit =
{
println("i="+i)
println("i.abs()="+i.abs)
}

在Scala中Int类型根本没有abs()方法,但是当JVM运行到这儿的时候,会发生一个隐式自动转换的操作。将Int类型转换为RichInt,而RichInt是有abs()方法。

当我们需要指定一个变量的类型时,如下定义:

var 变量名:变量类型

例如:

var num: Boolean = false;
var nameStr: String = "Poison_H";

基本类型都和Java差不多,所以笔者这儿不给于更多的介绍。但是大家可能注意到,Nothing,Any,AnyRef这三个是Java里面没有的类型。
那么下面就来介绍一下。
首先在API文档中有这样的的描述:

Class Any is the root of the Scala class hierarchy. Every class in a Scala execution environment inherits directly or indirectly from this class.

大概就是就是说:Any类是Scala类的根,Scala每个类直接或间接的继承这个类。有点类似Java的Object。

现在来看一张图:
这里写图片描述

从图中可以很清晰的看出继承关系以及类型转换关系。

Any下面有两个子类:AnyVal 和 AnyRef ,在AnyRef 的最底层有一个NULL的特殊类型,NULL类是所有AnyRef 类的子类

Nothing类是所有类的子类,NULL类有且只有唯一一个值:null,可以赋值给所有AnyRef 类型的变量。

在基础类型中只有String是继承自AnyRef的,与Java、.net一样,Scala中的String也是内存不可变对象,这就意味着,所有的字符串操作都会产生新的字符串。

如遇不懂,请及时留言。文章有错,欢迎提出!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值