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

Scala 数据类型

Scala partage les mêmes types de données que Java. Le tableau suivant liste les types de données pris en charge par Scala :

type de données描述
Byte8entier codé sur b bits avec complément à deux. L'intervalle de valeurs est -128 à 127
Short16entier codé sur b bits avec complément à deux. L'intervalle de valeurs est -32768 à 32767
Int 32entier codé sur b bits avec complément à deux. L'intervalle de valeurs est -2147483648 à 2147483647
Long 64entier codé sur b bits avec complément à deux. L'intervalle de valeurs est -9223372036854775808 à 9223372036854775807
Float32 b bits, IEEE 754 nombre flottant simple de précision standard
Double64 b bits IEEE 754 nombre flottant double de précision standard
Char16caractère Unicode sans signe sur 16 bits, intervalle de valeur U+0000 à U+FFFF
Stringséquence de caractères
Booleantrue ou false
Unitreprésente une valeur absente, équivalent à void dans d'autres langages. Utilisé comme type de retour pour les méthodes ne renvoyant aucun résultat. Unit a une seule valeur d'instance, écrite en ().
Nullnull ou référence vide
RienLe type Nothing est au bas de la hiérarchie des classes Scala ; c'est un sous-type de toute autre classe.
AnyAny est le superclasse de toutes les autres classes
AnyRefAnyRef est la classe de base de toutes les classes de référence (reference class) dans Scala

Les types de données énumérés dans le tableau précédent sont des objets, c'est-à-dire que Scala n'a pas de types natifs comme Java. Dans Scala, il est possible d'appeler des méthodes sur les types de base tels que les nombres.

Littéral de base Scala

Scala est très simple et intuitif. Nous allons détailler la littéralisation Scala à suivre.

Littéral de type entier

Le littéral de type entier est utilisé pour le type Int, si il s'agit d'un Long, vous pouvez ajouter L ou l en suffixe au nombre. :

0
035
21 
0xFFFFFFFF 
0777L

Littéral de type flottant

Si un nombre flottant est suivi de f ou F en suffixe, cela signifie qu'il s'agit d'un type Float, sinon c'est un type Double. Voici un exemple :

0.0 
1e30f 
3.14159f 
1.0e100
.1

Littéral booléen

Les littéraux booléens ont true et false.

Littéral de symbole

Le littéral de symbole est écrit : '<Identifiant> ici <Identifiant> peut être tout identificateur composé de lettres ou de chiffres (attention : ne peut pas commencer par un chiffre). Ce littéral est mappé sur l'instance de la classe prédéfinie scala.Symbol.

Par exemple : Littéral de symbole 'x est une expression scala.Symbol("x") abréviation, la définition du littéral de symbole est la suivante :

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

Littéral de caractères

Les variables littérales Scala utilisent des guillemets simples ' Défini comme suit :

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

Parmi eux \ représente un caractère d'échappement, suivi de u0041 Un nombre ou \r\n et des caractères d'échappement fixes tels que \r\n.

Chaîne littérale

Les chaînes littérales Scala utilisent des guillemets doubles " Défini comme suit :

"Hello,\nWorld!"
"Site officiel de l'introduction de base : fr.oldtoolbag.com"

Méthode de représentation des chaînes de caractères multiples

Les chaînes de caractères multiples sont représentées par des guillemets doubles, avec le format suivant :""" ... """.

Voici un exemple :

val foo = """Introduction de base"
fr.oldtoolbag.com
fr.oldtoolbag.com
www.runnoob.com
Les trois adresses ci-dessus peuvent accéder à ""

Valeur Null

La valeur nulle est de type 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