博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala的变量声明和数据类型详解
阅读量:3961 次
发布时间:2019-05-24

本文共 804 字,大约阅读时间需要 2 分钟。

变量声明

在声明变量时,Scala 允许你决定该变量是不可变(只读)的,还是可变的(读写)。如下所示,不可变的“变量”用 val 关键字声明:

val array: Array[String] = new Array(5)

Scala 的大部分变量事实上是指向堆内存对象的引用,这一点与 Java 一致。所以,以上代码中的 array 也是一个引用,它不能指向其他 Array,但所指向的 Array 中的元素是可变的,如下所示:

在这里插入图片描述
一个 val 变量在声明时必须被初始化。
类似地,一个可变变量用关键字 var 来声明。尽管由于该变量是可变变量,声明后可以再次对其赋值,也必须在声明的同时立即初始化:
在这里插入图片描述
在 Java 中, 所谓的原生类型, 即 char、byte、short、int、long、float、double 和boolean,与其他引用类型有着本质的不同。这些类型确实既不是对象,也没有引用,是“原始”值。Scala 尽力使其面向对象特性更加一致,因此这些类型在 Scala 中是包含有方法的对象,就像引用类型一样。然而,Scala 编译时将这些类型尽可能地转为原生类型,使你可以得到原生类型的运行效率.

用 val 和 var 声明变量时必须初始化这一规则,但存在少数例外情况。例如,这两个关键字均可以用在构造函数的参数中,这时候变量是该类的一个属性,因此显然不必在声明时进行初始化。此时如果用 val 声明,该属性是不可变的;如果用 var 声明,则该属性是可变的、

在这里插入图片描述
var 和 val 关键字只标识引用本身是否可以指向另一个不同的对象,它们并未表明其所引用的对象是否可变。

为了减少可变性引起的bug,应该尽可能地使用不可变变量。

数据类型

在这里插入图片描述
其中Any和AnyRef 、AnyVal 、Nothing 之间的关系如下图:
在这里插入图片描述
空值之间的区别
在这里插入图片描述
当给变量定义的时候,不给出类型就是一个Nothing
在这里插入图片描述

转载地址:http://lemzi.baihongyu.com/

你可能感兴趣的文章
部分简化字感觉不如繁体字有深意
查看>>
cgo 崩溃 64位地址截断引发的挂死问题
查看>>
drbd
查看>>
网络 IP
查看>>
网络路由
查看>>
网络 tcp 性能 可靠
查看>>
网络 https 握手
查看>>
去掉调试信息
查看>>
lsof 使用
查看>>
golang获取本机地址
查看>>
date 使用
查看>>
ipcalc
查看>>
网络 linux 禁止 ping
查看>>
ELF 格式详解
查看>>
chromium 使用
查看>>
linux 检测虚拟机类型
查看>>
go - 运行时:内存不足
查看>>
top 使用
查看>>
Linux Netlink通信机制详解
查看>>
rsync 远程同步
查看>>