Scala-Datentypen

Die von Scala unterstützten Hauptdatentypen umfassen Basistypen, Sammlungstypen und spezielle Typen.

Die folgende Tabelle listet die von Scala unterstützten Datentypen auf:

TypkategorieDatentypBeschreibungTatsächliche Klasse in der Scala-Standardbibliothek
BasistypenByte8-Bit-Ganzzahl mit Vorzeichen, Wertebereich von -128 bis 127scala.Byte
BasistypenShort16-Bit-Ganzzahl mit Vorzeichen, Wertebereich von -32768 bis 32767scala.Short
BasistypenInt32-Bit-Ganzzahl mit Vorzeichen, Wertebereich von -2147483648 bis 2147483647scala.Int
BasistypenLong64-Bit-Ganzzahl mit Vorzeichen, Wertebereich von -9223372036854775808 bis 9223372036854775807scala.Long
BasistypenFloat32-Bit-IEEE-754-Gleitkommazahl mit einfacher Genauigkeitscala.Float
BasistypenDouble64-Bit-IEEE-754-Gleitkommazahl mit doppelter Genauigkeitscala.Double
BasistypenChar16-Bit-Unicode-Zeichen ohne Vorzeichen, Wertebereich von U+0000 bis U+FFFFscala.Char
BasistypenStringString-Typ, der eine Zeichenfolge darstelltjava.lang.String
BasistypenBooleanBoolescher Typ, Werte sindtrueoderfalsescala.Boolean
SammlungstypenListUnveränderliche verkettete Listescala.collection.immutable.List
SammlungstypenSetUnveränderliches Setscala.collection.immutable.Set
SammlungstypenMapUnveränderliche Sammlung von Schlüssel-Wert-Paarenscala.collection.immutable.Map
SammlungstypenArrayVeränderbares Arrayscala.Array
SammlungstypenTupleUnveränderlicher Container, der Elemente unterschiedlicher Typen enthalten kannscala.TupleN
SammlungstypenOptionRepräsentiert einen Container, der einen Wert enthalten oder leer sein kannscala.Option
SammlungstypenEitherRepräsentiert einen von zwei möglichen Werttypenscala.util.Either
SammlungstypenTryContainer zur Handhabung von Operationsergebnissen, die erfolgreich sein oder fehlschlagen könnenscala.util.Try
Spezielle TypenUnitStellt keinen Wert dar, entspricht dem von Javavoidscala.Unit
Spezielle TypenNullSingleton-Objekt, das den Nullwert für alle Referenztypen darstelltscala.Null
Spezielle TypenNothingStellt keinen Rückgabewerttyp dar, ist ein Untertyp aller Typenscala.Nothing
Spezielle TypenAnyObertyp aller Typenscala.Any
Spezielle TypenAnyRefObertyp aller Referenztypen, entspricht dem von JavaObjectscala.AnyRef

In Scala sind alle Datentypen Objekte.

Scala hat nicht das Konzept primitiver Typen wie Java. Obwohl Scalas grundlegende Datentypen (wie Int, Double usw.) syntaktisch ähnlich wie Javas primitive Typen aussehen, sind sie tatsächlich Objekte. Das bedeutet, dass Sie Methoden auf diesen Typen aufrufen können.

Zum Beispiel ist der Typ Int in Scala tatsächlich eine Instanz der Klasse scala.Int, und scala.Int ist eine finale Klasse, die von AnyVal erbt. AnyVal ist eine spezielle Klasse in Scala, die Werttypen repräsentiert.

Das Folgende ist ein vollständiges Scala-Programm, das die Verwendung verschiedener Datentypen demonstriert:

Code der Datei DataTypeExamples.scala:

object DataTypeExamples {
  def main(args: Array[String]): Unit = {
    // Grundlegende Typen
    val byteValue: Byte = 127
    val shortValue: Short = 32767
    val intValue: Int = 2147483647
    val longValue: Long = 9223372036854775807L
    val floatValue: Float = 3.14f
    val doubleValue: Double = 3.141592653589793
    val charValue: Char = 'A'
    val stringValue: String = "Hello, Scala!"
    val booleanValue: Boolean = true

    // Sammlungstypen
    val listValue: List[Int] = List(1, 2, 3)
    val setValue: Set[String] = Set("Scala", "Java", "Python")
    val mapValue: Map[String, Int] = Map("eins" -> 1, "zwei" -> 2, "drei" -> 3)
    val arrayValue: Array[Int] = Array(4, 5, 6)
    val tupleValue: (Int, String, Boolean) = (42, "Antwort", wahr)
    val optionValue: Option[String] = Some("Ich bin hier")
    val eitherValue: Either[String, Int] = Right(42)
    val tryValue: Try[Int] = Try(10 / 2)

    // Spezielle Typen
    val unitValue: Unit = ()
    val nullValue: String = null
    val nothingValue: Nothing = throw new RuntimeException("Nothing-Wert")

    // Alle Werte ausgeben
    println(s"Byte-Wert: $byteValue")
    println(s"Short-Wert: $shortValue")
    println(s"Int-Wert: $intValue")
    println(s"Long-Wert: $longValue")
    println(s"Float-Wert: $floatValue")
    println(s"Double-Wert: $doubleValue")
    println(s"Char-Wert: $charValue")
    println(s"String-Wert: $stringValue")
    println(s"Boolean-Wert: $booleanValue")
   
    println(s"List-Wert: $listValue")
    println(s"Set-Wert: $setValue")
    println(s"Map-Wert: $mapValue")
    println(s"Array-Wert: ${arrayValue.mkString(", ")}")
    println(s"Tuple-Wert: $tupleValue")
    println(s"Option-Wert: $optionValue")
    println(s"Either-Wert: $eitherValue")
    println(s"Try-Wert: $tryValue")
   
    println(s"Unit-Wert: $unitValue")
    println(s"Null-Wert: $nullValue")
   
    // nothingValue wird nicht ausgegeben, weil es eine Ausnahme auslöst
  }
}

Mit dem scalac-Compiler kompilieren und mit dem Befehl scala ausführen:

scalac DataTypeExamples.scala
scala DataTypeExamples

Ausgabeergebnis:

Byte Value: 127
Short Value: 32767
Int Value: 2147483647
Long Value: 9223372036854775807
Float Value: 3.14
Double Value: 3.141592653589793
Char Value: A
String Value: Hello, Scala!
Boolean Value: true
List Value: List(1, 2, 3)
Set Value: Set(Scala, Java, Python)
Map Value: Map(one -> 1, two -> 2, three -> 3)
Array Value: 4, 5, 6
Tuple Value: (42,Answer,true)
Option Value: Some(I am here)
Either Value: Right(42)
Try Value: Success(5)
Unit Value: ()
Null Value: null
Weitere Erweiterungen