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

Scala 数据类型

Scala hat die gleichen Datenarten wie Java. Nachstehend ist eine Tabelle mit den von Scala unterstützten Datenarten aufgeführt:

Datenart描述
Byte8bitgezeichneter komplementäres Ganzzahl. Wertebereich -128 bis 127
Short16bitgezeichneter komplementäres Ganzzahl. Wertebereich -32768 bis 32767
Int 32bitgezeichneter komplementäres Ganzzahl. Wertebereich -2147483648 bis 2147483647
Long 64bitgezeichneter komplementäres Ganzzahl. Wertebereich -9223372036854775808 bis 9223372036854775807
Float32 bit, IEEE 754 Standard single-precision floating-point number
Double64 bit IEEE 754 Standard double-precision floating-point number
Char16bitunsignierte Unicode-Zeichen, Wertebereich U+0000 bis U+FFFF
StringZeichenfolge
Booleanwahr oder falsch
UnitStellt einen Wert ohne Bedeutung dar, was in anderen Sprachen mit void gleichzusetzen ist. Wird als Rückgabetyp für Methoden verwendet, die kein Ergebnis liefern. Unit hat nur einen Instanzwert und wird in Klammern () geschrieben.
Nullnull oder Referenz auf einen leeren Wert
NichtsDer Typ Nothing ist am untersten Ende der Klassenhierarchie in Scala; es ist ein Subtyp jeder anderen Typ.
AnyAny ist die Superklasse aller anderen Klassen
AnyRefDie Klasse AnyRef ist die Basisklasse aller Referenzklassen (reference class) in Scala

Die in der obigen Tabelle aufgelisteten Datentypen sind Objekte, das bedeutet, Scala hat keine Java-ähnlichen primitiven Typen. In Scala kann man Methoden auf numerische Basistypen aufrufen.

Scala-Basis-Literals

Scala ist sehr einfach und intuitiv. Wir werden im Folgenden Scala-Literals im Detail erläutern.

Ganzzahl-Literal

Ganzzahl-Literal werden für den Typ Int verwendet, wenn sie Long darstellen sollen, können sie nach der Zahl L oder die kleine l als Suffix hinzufügen.:

0
035
21 
0xFFFFFFFF 
0777L

Fließkommaliteral

Wenn ein Fließkommazahl mit einem Suffix f oder F endet, dann ist es ein Float-Typ, andernfalls ein Double-Typ. Ein Beispiel ist:

0.0 
1e30f 
3.14159f 
1.0e100
.1

Boolsche Literal

Boolsche Literal haben true und false.

Symbol-Literal

Symbol-Literals werden wie folgt notiert: '<Bezeichner> hier <Bezeichner> kann jeder Bezeichner sein, der aus jedem Buchstaben oder jeder Zahl besteht (Beachten Sie: Er kann nicht mit einer Zahl beginnen). Diese Literal werden in Instanzen der vorgegebenen Klasse scala.Symbol gemappt.

z.B.: Symbol-Literal 'x ist ein Ausdruck scala.Symbol("x") kurzgefasst, Symbol-Literals werden wie folgt definiert:

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

Zeichen-Literal

In Scala werden einfache Anführungszeichen für Zeichen-Literals verwendet ' definiert, wie folgt:

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

darunter \ zeigt ein Escape-Zeichen an, das gefolgt werden kann von u0041 Zahl oder \r\n und anderen festen Escape-Zeichen.

String-Literal

In Scala werden doppelte Anführungszeichen für String-Literal verwendet " definiert, wie folgt:

"Hallo,\nWelt!"
"Grundlagen教程Webseite: de.oldtoolbag.com"

Darstellungsmethode für mehrzeilige Strings

Mehrzeilige Strings werden durch drei doppelte Anführungszeichen getrennt, Format ist:""" ... """.

Ein Beispiel ist wie folgt:

val foo = """Grundlagen教程"
de.oldtoolbag.com
de.oldtoolbag.com
www.runnoob.com
Die folgenden drei Adressen können auf """ zugegriffen werden

Null-Wert

Leerwert ist der Typ scala.Null.

Scala.Null 和 scala.Nothing 是用统一的方式处理 Scala 面向对象类型系统的某些 "边界情况" 的特殊类型。

Null 类是 null 引用对象的类型,它是每个引用类(继承自 AnyRef 的类)的子类。Null 不兼容值类型。

Scala 转义字符

下表列出了常见的转义字符:

转义字符Unicode描述
\b\u0008退格(BS) ,将当前位置移到前一列
\t\u0009水平制表(HT) (跳到下一个TAB位置)
\n\u000a换行(LF) ,将当前位置移到下一行开头
\f\u000c换页(FF),将当前位置移到下页开头
\r\u000d回车(CR) ,将当前位置移到本行开头
\"\u0022代表一个双引号(")字符
\'\u0027代表一个单引号(')字符
\\\u005c代表一个反斜线字符 '\'

0 到 255 之间的 Unicode 字符可以用一个八进制转义序列来表示,即反斜线"\"后跟 最多三个八进制。

在字符或字符串中,反斜线和后面的字符序列不能构成一个合法的转义序列将会导致 编译错误。

以下实例演示了一些转义字符的使用:

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

运行后输出结果如下:

$ scalac Test.scala
$ scala TestHello    World