`

Scala学习笔记——Scala数据类型

 
阅读更多

在Scala中,一切都是对象,即使是一个整数也是对象:

  1. scala> 1
  2. res0: Int = 1 scala> "Hello" res1: java.lang.String = Hello
复制代码
Int实际上是scala包(package)中的类别,Scala会自动import该包下的类别,ByteShortIntLongCharFloatDoubleBoolean等都位于scala包中,在JVM上运行时,它们对应于Java中的byteshortintlongcharfloatdoubleboolean等基本型态(Primitivetype),有着与Java中基本资料型态相同的范围。Scala也重用一些Java中的类别,例如字串,在上面的示范中可以看到,Scala直接重用了java.lang.String类别(Scala也会自动importjava.lang)。
如果你在程式中直接写一个整数,则默认的是十进位的Int整数,你可以用0开头表示这是个八进位整数,用0x开头表示这是个十六进位整数,以Ll结尾时,表示这会是个Long整数:
  1. scala> 010
  2. res2: Int = 8
复制代码
如果你直接撰写一个浮点数,则默认会是个Double,加上Ff可以指定其为Float,你也可以使用特学记号来表示浮点数:
  1. scala> 3.14
  2. res5: Double = 3.14
  3. scala> 3.14F
复制代码
字符是以单引号包裹住,也可以指定Unicode编码:
  1. scala> 'A'
  2. res9: Char = A
  3. scala> '\u0041'
复制代码

\作开头为转义字符,如以上指定Unicode编码是其中一例,你还可以有以下的字符来转义:

  
\\
  
  
反斜线
  
  
\'
  
  
单引号  '
  
  
\"
  
  
双引号"
  
  
\uxxxx
  
  
以16  进位数指定Unicode字元输出
  
  
\b
  
  
倒退一个字元
  
  
\f
  
  
换页
  
  
\n
  
  
换行
  
  
\r
  
  
光标移至行首
  
  
\t
  
  
跳格(一个Tab键)
  






Scala中,若要取得整数、浮点数等的数值范围,则可以使用scala.Math(这是一个object定义)中所定义的值(在Java中则是定义在各自的包裹对象上,如IntegerDouble等),例如:

  1. println("Int: " + Math.MIN_INT + " ~ " + Math.MAX_INT)
  2. println("Long: " + Math.MIN_LONG + " ~ " + Math.MAX_LONG)
  3. println("Float: " + Math.MIN_FLOAT + " ~ " + Math.MAX_FLOAT)
  4. println("Double: " + Math.MIN_DOUBLE + " ~ " + Math.MAX_DOUBLE)
复制代码

这个程式会显示以下结果:

  1. Int: -2147483648 ~ 2147483647
  2. Long: -9223372036854775808 ~ 9223372036854775807
  3. Float: -3.4028235E38 ~ 3.4028235E38
  4. Double: -1.7976931348623157E308 ~ 1.7976931348623157E308
复制代码

在Scala中,如整数、浮点数等基本类型,可以直接作一些操作,例如:

  1. scala> -13 abs
  2. res5: Int = 13
  3. scala> 1 max 2
  4. res6: Int = 2
  5. scala> 3.14 round
  6. res7: Long = 3
  7. scala>
复制代码
事实上,absmaxround等都是对象上的方法(在Scala中,方法如果不带参数或只带一个参数,则括号可以省略),但并非IntDouble上的方法,在Scala中,如果发现某个方法不属于某对象,则会尝试看看是否有定义的隐式转换(Implicitconversion),在这边的例子中,由于Scala为这些基本数据类型定义了一些富包裹器(RichWrapper),当必要时,会尝试将数值以富包裹器包裹,看看是否可以执行所指定的方法,例如absmax其实是scala.runtime.RichInt上的方法,round其实是scala.runtime.RichDouble上的方法。下表列出了基本型态与富包裹器的对应:

 

  
scala.Byte
  
  
scala.runtime.RichByte
  
  
scala.Char
  
  
scala.runtime.RichChar
  
  
scala.Int
  
  
scala.runtime.RichInt
  
  
scala.Long
  
  
scala.runtime.RichLong
  
  
scala.Float
  
  
scala.runtime.RichFloat
  
  
scala.Double
  
  
scala.runtime.RichDouble
  
  
scala.Boolean
  
  
scala.runtime.RichBoolean
  
  
java.lang.String
  
  
scala.runtime.RichString
  
分享到:
评论

相关推荐

    Scala学习笔记,大全笔记

    Scala学习笔记,大全笔记

    Scala学习笔记(全)

    ### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...

    scala学习笔记整理

    在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...

    Scala学习笔记

    ### Scala学习笔记关键知识点 #### 1. “均码”哲学与并发编程 - **“均码”哲学**: 指的是Scala设计时遵循的一种设计理念,即尽量保持语言的统一性和简洁性,使得不同的功能和特性能够以一种相似的方式进行处理。...

    [Scala学习笔记-中文资料]从java角度看Scala

    [Scala学习笔记-中文资料] 从java角度看Scala

    scala学习笔记1

    ScalaOverview.pdf ScalaTutorial.pdf ProgrammingInScala.pdf(这本是书) 博文链接:https://dogstar.iteye.com/blog/182673

    Scala学习笔记1——从文件读取文本行

    刚接触Scala,所以并不是很习惯这种函数式编程风格,就从现在的第一篇笔记开始记录这个学习过程啦!笔记来源于《Scala编程》的学习。 从文本读取文本行 初步目标: 构建一个脚本从文本读取文本行,并将它们打印出来...

    scala讲解笔记 入门及进阶 PDF文档1-5

    在这里,你会学习到Scala的安装与环境配置,理解Scala的基本语法,包括变量声明、数据类型(如基本类型、引用类型和集合类型)、控制结构(如条件语句和循环)以及函数定义和调用。此外,还会介绍Scala中的模式匹配...

    最好的scala学习 课件

    你会学习到Scala的语法结构,包括变量声明、常量、数据类型(如基本类型、引用类型、集合类型)、运算符、流程控制语句(如if-else、for循环、while循环)以及函数和方法的定义。此外,你还将了解Scala的模式匹配和...

    scala学习资料

    3. 类型系统:Scala具有强大的静态类型系统,可以防止运行时错误。它支持类型推断,允许开发者编写更少的类型声明,同时保持类型安全。 4. 集合库:Scala的集合库设计精良,包含各种高效的数据结构,如List、Set、...

    Scala-学习资料-mht.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发、大数据分析以及构建高性能系统时表现卓越。在"Scala-学习资料-mht.rar"这个压缩包中,包含了关于Scala的学习资料,格式为...

    scala学习笔记

    - **基本数据类型**:Scala 支持多种基本数据类型,包括整型(如 `Int`, `Long`)、浮点型(如 `Float`, `Double`)等。 - **复合数据类型**:例如数组 (`Array`) 和列表 (`List`)。 - **Any 类型**:所有类型的父类...

Global site tag (gtag.js) - Google Analytics