Julia Data Types

While Julia is a dynamically typed language, values have a concrete type.


Abstract Types

Abstract types should not be used directly. They are supertypes that categorize behaviors. They are however useful for constructing a novel data type, or for typing the arguments to a function.

The primary set of abstract types, with their hierarchy of supertypes and subtypes indicated by indentation, is:


Numeric Types

The set of primitive types that descend from the Number abstract type are:


String Types

String is a subtype of AbstractString that implicitly is encoded in UTF-8.

Packages may create novel subtypes of AbstractString, so consider typing string arguments for functions as AbstractString rather than String.

Char is a subtype of AbstractChar, and is a 32-bit representation a Unicode character.


Composite Types

Structs are a composite data type. Struct values can be instantiated like:

julia> struct Foo
           bar
           baz
           qux
       end

julia> foo = Foo("Hello, world.", 23, 1.5)
Foo("Hello, world.", 23, 1.5)

Fields are accessed by the dot operator.

julia> foo.bar
"Hello, world."

By default, struct objects are immutable.


Collection Types

Values can be collected in a variety of series types.

The Array type is a general purpose series of values, all of the same type. Both Vector and Matrix types descend from AbstractArray.

The range operator (:) creates collections that have some type descending from AbstractRange, which also descends from AbstractArray. The differences between e.g. UnitRange and OrdinalRange relate to the available optimizations.


== Nothing Type ===

The singleton constant nothing is of type Nothing.


CategoryRicottone

Julia/DataTypes (last edited 2026-01-18 23:01:45 by DominicRicottone)