变量声明

在声明变量时,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

Scala的变量声明和数据类型详解相关推荐

  1. python3 批量定义多个变量_Python3 基本数据类型详解

    文章来源:加米谷大数据 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型&quo ...

  2. python 子字符串 位置_python查找子字符串位置Python变量和数据类型详解

    Python变量和数据类型 Python中数据类型 Python之print语句 Python的注释 Python中什么是变量 Python中定义字符串 Python中raw字符串与多行字符串 Pyt ...

  3. 开课吧课堂:C++基本数据类型详解

    一般来说在学习C++开发技术的时候,C++数据类型是必然需要了解和学习的,同时也是一名C++开发工程师所需要深入了解的.接下来小编带你一起了解下C++基本数据类型: C++基本数据类型详解 说明符(s ...

  4. Java八大基本数据类型-详解

    Java八大基本数据类型-详解 3.5 八大基本数据类型 Java中的八大基本数据类型在我们学习Java编程中非常重要,可以说是Java编程的起步.这节会为大家非常细致地介绍如何使用这八大基本数据类型 ...

  5. mysql权限和使用注意事项及mysql 数据类型详解和innodb,myisam区别

    mysql用户权限管理(Grant,Revoke) MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL 指令Grant(分配权限)和Revoke(回收权限)来实现. Gran ...

  6. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  7. 为什么要设定PHP数据类型,php数据类型详解

    php数据类型详解 PHP 支持8种基本的数据类型. 四种标量类型: boolean (布尔型)integer (整型)float (浮点型, 也称作 double)string (字符串) 两种复合 ...

  8. Python中的list/tuple/dict/set数据类型详解

    Python中的list/tuple/dict/set数据类型详解 Python内部内置了一些数据类型与结构,可以方便在编程时候的使用. list List存储一系列的有序集合,并且元素内容可变(可更 ...

  9. python六大数据类型详解

    python 六大数据类型详解 文章目录 python 六大数据类型详解 数据类型简介 Number(数值) String(字符串) Python字符串的45个方法详解 一.大小写转换 01.capi ...

最新文章

  1. hdu 5366 简单递推
  2. 一篇文章讲清楚人工智能、机器学习和深度学习的区别和联系
  3. ubuntu多版本python和pip切换
  4. C# 对WinForm应用程序的App.config的使用及加密
  5. faster rcnn学习之rpn训练全过程
  6. 【转】SVN冲突出现场景
  7. foo bar的意思
  8. [工具资源] 《HelloGitHub》第 08 期
  9. android qq轻聊版,Android QQ轻聊版怎么样 Android QQ轻聊版介绍
  10. 计算机网络技术毕业生实习报告_计算机网络毕业实习报告
  11. Win10 - 注册表获取权限的方法
  12. react项目中播放音频时扬声器图标动画效果
  13. 肥鲨HDO和HD3买哪个?
  14. 关于Xshell无法连接VM中的openEuler的解决思路
  15. win10系统英雄联盟老是重新连接服务器,更新win10系统后lol进不去游戏怎么回事 win10lol重新连接进不去怎么办...
  16. 农夫住房抵押贷款叫醒农村沉睡资本
  17. 免费的SVG在线编辑器大推荐
  18. 技术人员的横向纵向发展
  19. C6678 srio和edma同时访问ddr冲突问题解决思路
  20. 网易闪电邮收信显示连接服务器,网易闪电邮IMAP协议同步网页邮箱收发邮件的使用技巧...

热门文章

  1. OSTA-LINUX3-选择题练习题整理
  2. Checked异常和Unchecked异常
  3. HDB3 的译码 ③(Verilog 语言实现)2021-9-12
  4. stm32和esp32通信实现蓝牙传输与手机通信
  5. java输入年月输出日历_java 输入年月,获取日历表
  6. 中西医结合,缓解肝癌晚期疼痛
  7. VOC和COCO数据集的介绍和转换
  8. Sallen-Key滤波器的详细介绍
  9. 周志华组最新论文提出“溯因学习”,受玛雅文字启发的神经逻辑机
  10. 主机安全防护五大难点攻克