Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Scala Types / Variables

0.00/5 (No votes)
15 Oct 2015 1  
Scala types / variables

Since Scala is a JVM language, it is not surprising to see that it has the same data types as Java.

The following table illustrates the common data types:

Data Type Description
Byte 8 bit signed value. Range from -128 to 127
Short 16 bit signed value. Range -32768 to 32767
Int 32 bit signed value. Range -2147483648 to 2147483647
Long 64 bit signed value. -9223372036854775808 to 9223372036854775807
Float 32 bit IEEE 754 single-precision float
Double 64 bit IEEE 754 double-precision float
Char 16 bit unsigned Unicode character. Range from U+0000 to U+FFFF
String A sequence of Chars
Boolean Either the literal true or the literal false
Unit Corresponds to no value
Null null or empty reference
Nothing The subtype of every other type; includes no values
Any The supertype of any type; any object is of type Any
AnyRef The supertype of any reference type

The items in this table are all objects, which means you can call methods on them.

For example, suppose we have declared an int value like this:

var _int = 23 

We could then call methods on it like this:

image

This is somewhat different to Java where there are true primitives. Scala's approach uses objects known as RichXXX which have something called implicit conversions, which allows them to be used to interop with Java where you may need to pass a Java primitive (say as int).

For example, there is a RichInt class in Scala, which you can read about here:

There are quite a few RichXXX classes in Scala, I would urge you all to read about them.

There is a good discussion on this at StackOverflow:

For now, let's see how we can declare some variables in Scala.

Integers

Here are some valid ways to create integers:

val _int1 = 0
val _int2 = 35
val _int3 = 21
val _int4 = 0xFFFFFFFF
val _int5:Long = 0XCAFEBABE

Floating Points

Here are some valid ways to create floating points:

val _float1 = 0.0
val_float2 = 1e40f
val _float3 = 2.1543f
val _float4 = 6.0e600
val _float5 = .4

Booleans

Here are some valid ways to create booleans:

val _bool1 = false
val _bool2 : Boolean = true
val _bool = _bool1 && _bool2

Characters

Here are some valid ways to create characters:

val _char1 = 'b'
val _char2 = '\u0037'
val _char3 = '\n'
val _char4:Char = '\t'

Strings

Here are some valid ways to create strings:

val _string1 = "Hello,\nWorld!"
val _string2 = "This string contains a \" character."

Multiline strings

You can also create multiline strings like this:

val _multiLineString ="""this string
                          is a long one, it has 
                          3 lines."""

String interpolation

Scala also supports string interpolation, such that you can do things like this:

val _string1 = "Hello,\nWorld!"
val _string2 = "This string contains a \" character."
val string3 = s"The value of string1 = $_string1, and string2 = $_string2"

Escape Sequences

The following escape sequences are valid:

Escape Sequence Unicode Description
\b \u0008 backspace BS
\t \u0009 horizontal tab HT
\n \u000c formfeed FF
\f \u000c formfeed FF
\r \u000d carriage return CR
\” \u0022 double quote “
\’ \u0027 single quote .
\\ \u005c backslash \

Var vs Val

There is one last thing I wanted to mention in this post, which is the difference between var and val in Scala.

Val

Basically val is an immutable object. That is you can change the value of it, but you will not be able to recreate a new object pointer (reference) for a val. This would be an error. An object assigned to a var can still have its internal state altered though.

Var

Var on the other hand is mutable, and as such will let you assign a new object pointer (reference).

There is a great StackOverflow post on this, which I would encourage you all to read:

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here