你好,游客 登录
背景:
阅读新闻

第3章 Scala基本数据类型

[日期:2021-09-26] 来源:  作者: [字体: ]

 

本文来自艾叔编著的《零基础快速入门Scala》免费电子书,添加文末艾叔微信,获取完整版的PDF电子书

 

第3章  Scala基本数据类型

 

本章介绍Scala的基本数据类型,基本数据类型是Scala语言的基石:Scala中所有的变量都要有一个基本数据类型;所有的函数参数、返回值都会用到基本数据类型;即使是自定义的class/object,到最后,也会落实到基本数据类型。

3.1  基本数据类型

Scala中定义了9种基本的数据类型,它们的名字、取值范围和说明如表3-1所示。

 3-1 Scala基本数据类型及说明

序号

类型名称

字节数

取值范围

使用说明

1

Byte

1

-128~127

1字节,8位,有符号整型

2

Char

2

0~65535

Unicode字符,2字节,16位无符号

3

Short

2

-32768~32767

2字节,16,有符号整型

4

Int

4

-2147483648~2147483647

4字节,32位,有符号整型

5

Long

8

-9223372036854775808~

9223372036854775807

8字节,64位,有符号整型

6

Float

4

-3.4028235E38~3.4028235E38

4字节,32位,IEEE754单精度浮点型

7

Double

8

-1.7976931348623157E308~

1.7976931348623157E308

8字节,64位,IEEE754双精度浮点型

8

Boolean

 

true/false

Boolean类型只有truefalse两个值

9

Unit

 

()

Unit类型只有1个实例,用一个括号()表示

以上9种基本数据类型,都是class,例如:val num=1为例,numInt类型,Int是一个classnum则是一个引用,它指向值为1Int对象(实例),num有自己的方法,例如各种转换方法等,同时数值1也有自己的方法,如getClass,总之,Scala中,一切皆对象;

Byte是单字节的,可以存放ASCII

ScalaCharJavaChar一样,都是2字节的,存放单个字符,包括英文和中文字符;

String不是Scala中的基本数据类型,Scala中的String直接使用的是Java中的String类。

3.2  基本操作

本节介绍Scala基本数据类型的基本操作,具体如下。

1. 打印类型的范围

例如:打印Byte类型的最小值,具体命令如下。

scala> Byte.MinValue

res24: Byte = -128

打印Byte类型的最大值,具体命令如下。

scala> Byte.MaxValue

res25: Byte = 127

有了这两个函数,就不需要记住表3-1中的数值范围了。

2. 打印数据的类型

打印数字1的类型,具体命令如下。

scala> 1.getClass

res26: Class[Int] = int

打印变量的类型,例如打印变量a的类型。

scala> a.getClass

res28: Class[Char] = char

在没有IDEA的情况下,如果要确定一个变量的类型,使用getClass方法,是比较好的方法。

3.3  数据类型转换

3-1列出了类型转换的原则:顺着箭头方向,可以自动转换,不需要显式转换,例如Byte类型的数据可以赋值给Short类型变量,反过来(反箭头方向),不能自动转换,需要显式转换,即调用具体的转换函数。

 

 3-1 Scala基本数据类型转换

https://docs.scala-lang.org/tour/unified-types.html

例如,声明一个Char类型变量c,其值为A

scala> val c = 'A'

c: Char = A

c赋值给Int类型变量nn的值为65,即字符AASCII码值,因为是箭头方向,因此,不需要调用c.toInt,可以直接转换。

scala> val n:Int = c

n: Int = 65

反箭头方向,则不能自动转换,如下面的例子就报错了。

scala> val b:Char = n

<console>:12: error: type mismatch;

 found   : Int

 required: Char

       val b:Char = n

调用转换函数,显式转换,是可以的。

scala> val b:Char = n.toChar

b: Char = A

加艾叔微信,加入Linux(Shell+Zabbix)、大数据(Spark+Hadoop)、云原生(Docker+Kubernetes)技术交流群

关注艾叔公众号,获取更多一手信息

 



收藏 推荐 打印 | 阅读:
相关新闻