Datatyper i Java

En datatyp säger till datorn antal bitar att använda och hur data ska hanteras för att undvika fel. Det finns två varianter av datatyper i Java:

  • Primitiva
  • Referens eller icke primitiva

Primitiv datatyp i Java

Varje datatyp tar upp en viss mängd av lagringsceller i minnet och för att använda rätt lagringscellerna ska man kunna datatyper så att program använder just det specifika mängden av minnesplatser och inte annat.

Bild 1: Rätt datatyp i variabel

Primitiva datatyp i Java kan grupperas i fyra:

  • Heltal: byte, short, integer, long
  • Decimaltal: float och double
  • Boolesk datatyp: true eller false
  • Tecken: char

Heltal i Java

Datatyp Bitstorlek Min-värde Max-värde
byte 8 128 127
short 16 32 768 32 767
int 32 2 147 483 648 2 147 483 647
long 64 9 * 1018 ≈ 9 * 1018

 

Decimaltal i Java

Datatyp Bitstorlek Min-värde Max-värde
float 32 3.4 * 1018 ≈ 3.4 * 1018
double 64 1.7 * 10308 ≈ 1.7 * 10308

 

Boolean datatyp i Java

  • True som kan vara en etta
  • False som kan vara en nolla

Tecken och text i Java

  • char (character) lagras tecken exempelvis ’a’ eller ’m’
  • string är en uppsamling av flera char och där lagras ett helt ord, eller en hel mening. På svenska sträng.

Datatypen char lagrar olika sorts tecken exempelvis små bokstäver, stora bokstäver, och andra tecken. För att lagra ett tecken i ett Javaprogram använder man 2 byte i primära minnet. När man lagrar tecken i Java, utgår man från Unicode teckenlistan. Den här listan innehåller ett stort antal tecken som organiseras i en viss ordning därmed varje tecknet får en ordningsnummer.

När man lagrar tecken så lagrar man tecknets kod. Till exempel tecknet A har ordningsnummer 65 och när man lagrar A, lagrar man 65. I Unicode-listan finns även olika siffror som uppfattas vara tecken och inte numeriska siffror såsom siffran 0 (inte heltal 0). Siffran 0 finns i listan på platsen 48. Det finns också speciella tecken i Unicode-listan som inte kan skrivas ut i ett Javaprogram exempelvis siffran 7 och några andra till.

I vissa sammanhang använder man hexadecimala koder för att representera olika tecken. Till exempel ordningsnummer 65 (A) kan skrivas hexadecimalt som 41 och i ett Javaprogram: char   t1 = ’u\0041’;

Heltal noll, siffran noll och nolltecknet

  • Heltal 0 lagras som sådan i minnet. Till exempel
    • int   nollTal = 0;
  • Siffran 0 lagras i minnet som heltalet 48 (teckens ordningsnummer)
  • Nolltecknet är det tecken som har ordningsnummer 0 i Unicode-listan. Både heltal noll och nolltecknet lagras som heltal 0, men de lagras som olika datatyper därmed hanteras de på olika sätt.

Specialtecken

Speciella tecken som nyradstecknet, tabbtecknet, backstegstecknet, returtecknet har också sina koder såsom nyradstecknet som har ordningsnummer 10 och som skulle kodas i ett Javaprogram så här: char nyrad = 10;

Men det kan vara ibland förvirrande när man glömmer koden och ett annat sätt att koda i Java är med hjälp av ett snedstreck så här:

  • char nyrad = ’\n’;
  • char tabbTecken = ’\t’;
  • char backTecken = ’\b’;
  • char returTecken = ’\r’;