English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala のデータ型

ScalaはJavaと同じデータ型を持ち、Scalaがサポートするデータ型は以下の通りです:

データ型説明
Byte8ビット符号付き補码整数。数値範囲は -128 から 127
Short16ビット符号付き補码整数。数値範囲は -32768 から 32767
Int 32ビット符号付き補码整数。数値範囲は -2147483648 から 2147483647
Long 64ビット符号付き補码整数。数値範囲は -9223372036854775808 から 9223372036854775807
Float32 ビット、IEEE 754 標準の単精度浮動小数点数
Double64 ビットIEEE 754 標準の双精度浮動小数点数
Char16無符号Unicode文字、範囲値が U+0000 から U+FFFF
String文字シーケンス
Booleantrueまたはfalse
Unit無値を表す、他の言語のvoidに相当。何も返さないメソッドの結果のデータ型として使用されます。Unitは()で書かれる単一のインスタンス値を持っています。
Nullnullまたは空参照
何もありませんNothing类型在Scalaのクラス階層の最も低い場所に位置しており、他のどんなタイプもサブタイプとしています。
AnyAny是所有其他类的超类
AnyRefAnyRef类是Scala里所有引用类(reference class)的基类

上表中列出的数据类型都是对象,也就是说scala没有java中的原生类型。在scala是可以对数字等基础类型调用方法的。

Scala 基础字面量

Scala 非常简单且直观。接下来我们会详细介绍 Scala 字面量。

整型字面量

整型字面量用于 Int 类型,如果表示 Long,可以在数字后面添加 L 或者小写 l 作为后缀。

0
035
21 
0xFFFFFFFF 
0777L

浮点型字面量

如果浮点数后面有f或者F后缀时,表示这是一个Float类型,否则就是一个Double类型的。实例如下:

0.0 
1e30f 
3.14159f 
1.0e100
.1

布尔型字面量

布尔型字面量有 true 和 false。

符号字面量

符号字面量被写成: '<标识符> ,这里 <标识符> 可以是任何字母或数字的标识(注意:不能以数字开头)。这种字面量被映射成预定义类scala.Symbol的实例。

如: 符号字面量 'x 是表达式 scala.Symbol("x") 的简写,符号字面量定义如下:

package scala
final case class Symbol private (name: String) {
   override def toString: String = "'" + name
}

字符字面量

在 Scala 字符变量使用单引号 ' 来定义,如下:

'a' 
'\u0041'
'\n'
'\t'

其中 \ 表示转义字符,其后可以跟 u0041 数字或者 \r\n 等固定的转义字符。

字符串字面量

在 Scala 字符串字面量使用双引号 " 来定义,如下:

"Hello,\nWorld!"
"基础教程官网:ja.oldtoolbag.com"

多行字符串的表示方法

多行字符串用三个双引号来表示分隔符,格式为:""" ... """

实例如下:

val foo = """基础教程
ja.oldtoolbag.com
ja.oldtoolbag.com
www.runnoob.com
以上三个地址都能访问"""

Null 値

空值是 scala.Null 类型。

Scala.Nullとscala.Nothingは、Scalaの面向オブジェクト型システムの「境界状況」を統一した方法で処理する特別な型です。

Nullクラスはnullリファレンスオブジェクトの型で、AnyRefから派生するすべての参照クラスのサブクラスです。Nullは値型と互換性がありません。

Scala エスケープシーケンス

以下の表に一般的なエスケープシーケンスを示します:

エスケープシーケンスユニコード説明
\b\u0008バックスペース(BS) 、現在の位置を前の列に移動します
\t\u0009水平タブ(HT) 、次のTAB位置にジャンプします
\n\u000aラインフィード(LF) 、現在の位置を次の行の先頭に移動します
\f\u000cフォームフィード(FF) 、現在の位置を次のページの先頭に移動します
\r\u000dカーロッカー(CR) 、現在の位置を行の先頭に移動します
\"\u0022は、ダブルクォート(")文字を表します
\'\u0027は、シングルクォート(')文字を表します
\\\u005cは、アンダースコア文字「\」を表します

0 から 255 の Unicode 文字は、アンダースコア「\」の後ろに続く 最大で3桁の8進数。

文字や文字列の中で、アンダースコアとその後の文字列が有効なエスケープシーケンスを構成できない場合、 コンパイルエラー。

以下の例では、エスケープシーケンスの使用方法を示します:

object Test {
   def main(args: Array[String]) {
      println("Hello\tWorld\n\n");
   }
}

実行後の結果は以下の通りです:

$ scalac Test.scala
$ scala TestHello    World