Datatyper i Java: spara rätt typ av information i våra program


Nyckelord: Datatyper, integer, double, boolean

Det här kapitlet kommer behandla de primitiva datatyperna, även kallat grundläggande datatyper (engelska: data types) i Java. Vi kommer se hur vi kan deklarera (skapa) olika variabler och konstanter samt skillnader mellan olika datatyper. Avslutningsvis så kommer kapitlet gå igenom hur vi kan använda oss av variabler för en rad olika matematiska beräkningar, och mer generellt, vilka möjligheter och begränsningar de olika datatyperna medför.

Datatyper i Java

Datatyper i Java är det som bestämmer vilken slags data en variabel kan innehålla (t.ex. heltal, decimaltal, tecken, referens) där datatypen bestäms vid deklarationen. Det är viktigt att deklarera rätt datatyp till rätt data, då en variabel bara kan innehålla den typ av data den är deklarerad för. I program lagrar man data i variabler där varje variabel motsvaras av en minnesplats i datorn. Eftersom variabler går att använda om och om igen så blir de väldigt användbara och de utgör grunden i programmering.

Detta kapitel innehåller följande artiklar där vi först ska lära oss vad det innebär med olika datatyper, för att sedan gå vidare och implementera dem till en rad olika användningsområden

Vad är en datatyp i Java?

En datatyp berättar för datorn vilken typ av information som datan består av. Java och många andra kodspråk är så kallade typade språk. Med det menas att vi behöver hålla koll på vilken datatyp variabler har då vi använder dem till olika operationer. Det finns olika datatyper, där varje datatyp beskriver en viss sorts av data. För en dator är det nämligen stor skillnad på om man lagrar exempelvis en textsträng eller ett heltal, även om informationen är snarlik.

Java och många andra kodspråk är så kallade typade språk

I Java är det exempelvis skillnad att spara heltalet 10 eller textsträngen “10”. Och det skulle såklart inte gå att multiplicera talet 5 med textsträngen “3”. Därför behöver vi alltid ange vilken sorts information vi vill spara undan, så att kompilatorn kan tolka datan på rätt sätt. Detta gör vi med datatyper.

Sammanfattningsvis är en datatyp:

  • Ett sätt att berätta för datorn vilken sorts data en viss typ av information är.
  • Olika datatyper beskriver olika data, även om informationen beskriver samma sak, exempelvis heltalet 7 och textsträngen “7”.
  • Berättar för datorn hur den ska tolka datan för att undvika fel, exempelvis en multiplikation mellan en textsträng och ett heltal.

Varför använda datatyper i Java?

I programmering lagrar vi hela tiden information i minnet för att kunna använda den vid ett senare tillfälle. Gör vi exempelvis en uträkning, vill vi ju kunna spara värdet på uträkningen till ett senare tillfälle. I Java lagrar man data i variabler av en viss datatyp. En datatyp är som det låter – en viss typ av data. Exempelvis lagrar man heltal i integers och text sparar man i Strings. Därför måste vi veta vilka datatyper som finns och vilken information datatypen kan hålla. Man kan exempelvis inte lagra ett heltal i en String eller vise versa.

I Java lagrar man data i variabler av en viss datatyp

Oracle

Vad finns det för datatyper i Java?

Det finns två varianter av datatyper i Java, de primitiva datatyperna och Icke-primitiva datatyper (engelska: Non-primitive data types). En Icke-primitiv datatyp är en referens till en instans, till exempel en Array eller ett Objekt, och det låter säkerligen väldigt förvirrande. Oroa dig inte, vi kommer vi gå igenom vad allt det innebär i senare kapitel. Nu fokuserar vi på de primitiva datatyperna.

Vad är en primitiv datatyp i Java?

Varje datatyp tar upp en viss plats i minnet, ett visst antal bits. Du vet kanske redan att en dator enbart hanterar ettor och nollor (det vill säga bits) som representeras av det binära talsystemet (alltså ettor och nollor). Vi ska inte gå in på detalj hur det binära talsystemet fungerar här, men det viktiga att ta med sig är att stora tal behöver fler bits för att lagras, det vill säga större plats i minnet.

Det är alltså värt att fundera en extra gång på vilken datatyp man använder så att man inte slösar på minne, eller av misstag försöker spara ett för stort värde i en datatyp där den inte får plats, för då kommer programmet att krascha.

Figur 1 nedan visar en sammanställning av de fyra vanligaste kategorierna, nämligen heltal, decimaltal, boolesk datatyp och tecken, samt deras respektive datatyper

Datatyper Java Heltal Decimaltal Boolean Char
Figur 1: sammanställning av datatyper i Java

Men låt oss nu kolla lite närmare på de fyra olika kategorierna av primitiva datatyper.

Heltal i Java 

Vi börjar med heltalen, det vill säga 0, 1, 2, 3, …, o.s,v. och dess negativa motsvarighet -1, -2, -3, … , o.s.v. Det finns fyra stycken datatyper som lagrar heltal. Dessa är byte, short, int och long. Nedan ser du hur många bitar varje datatyp behöver, samt det minsta och största värdet som går att spara i respektive datatyp.

Datatyp Bitstorlek Min-värde Max-värde
byte 8 -128 128
short 16 -32 768 32 768
int 32 −2147 483 648 2147 483 648
long 64 ≈ −9 × 1018 ≈ 9 × 1018

Den vanligaste datatypen att använda är int, eftersom den täcker de mest tänkbara heltalen man kan behöva i ett program (tal mellan −2147 483 648 och 2147 483 648). Men long finns också tillgänglig om man skulle behöva större tal än så. Vet du med säkerhet att du bara kommer använda små tal i ditt program, kan du med fördel använda short eller byte.

Flyttal (decimaltal) i Java

Om du istället vill spara decimaltal i minnet, kan man använda sig av float eller double. De fungerar på liknande sätt som heltal, där float har 32 bitar och double 64 stycken. Dessa datatyper är användbara exempelvis när man vill spara ett irrationellt tal som pi, med godtyckligt många decimaler.

Datatyp Bitstorlek Min-värde Max-värde
float 32 ≈  −3.4 × 1038 ≈  3.4 × 1038
double 64 ≈  −1.7 × 10308 ≈  1.7 × 10308

Logiska värden i Java

Ett logiskt (booleskt) värde har datatypen boolean. En boolesk variabel kan endast anta värdena true eller false vilket gör att booleska variabler blir väldigt användbara som villkor exempelvis i if-satser eller loopar, när man vill köra ett program tills ett villkor är uppfyllt. Man kan även tänka att true är en etta (1), och false är en nolla (0).

Tecken och text i Java

Om man istället vill lagra tecken kan man använda sig av datatypen char (character). Char är perfekt att använda om man vill spara ett enda enskilt tecken, exempelvis bokstaven ‘a’. Men ofta vill man spara ett helt ord, eller en hel mening. Då behöver man använda sig av en samling av chars, så kallad String. Strings är visserligen ingen primitiv datatyp, men den används så ofta att vi redan nu introducerar den. En String är användbar när man vill spara en hel mening i minnet, exempelvis “Programmera Java är kul”.

Kan man byta mellan olika datatyper i Java?

Ja det går bra! Om problemet med att en operation inte kan utföras på grund av datatyperna inte överensstämmer så går det att lösa med hjälp av det som kallas typkonvertering. Vi kommer längre fram i det här kapitlet se hur vi kan använda typkonvertering och konvertera från en datatyp till en annan.

Sammanfattning av datatyper i Java

En datatyp berättar för datorn vilken typ av information som datan består av. Det finns olika datatyper, där varje datatyp beskriver en viss sorts av data.

En datatyp i Java är

  • Ett sätt att berätta för datorn vilken sorts data en viss typ av information består av.
  • Olika datatyper beskriver olika typer av data, även om informationen kan beskriva samma sak, exempelvis heltalet 14 och textsträngen “14”.
  • Datatyper hjälper datorn förstå hur den ska tolka datan för att undvika fel, exempelvis en multiplikation mellan en textsträng och ett heltal.

Vanliga frågor och svar: Datatyper i Java

Är det viktigt att jag väljer rätt datatyp?

Ja och nej. Det är viktigt att du väljer rätt kategori av datatyp. Exempelvis, ifall du jobbar med siffror och multiplicerar två tal så behöver du ha koll på vilken datatyp resultatet blir så att du skapar antingen ett heltal eller ett decimaltal, och inte t.ex. en boolean. Däremot är det inte lika viktigt att du väljer specifikt rätt datatyp. T.ex. i de flesta fall så spelar det inte så stor roll ifall du skapar en integer eller en long.

Hur vet jag att jag har valt rätt datatyp? Tänk om jag inser det när jag väl har byggt hela programmet.

Om man gör större fel, exempelvis om du skulle försöka multiplicera ett heltal med en textsträng så kommer kompilatorn automatiskt att varna. Däremot behöver du själv ha koll på vad resultatet på dina beräkningar blir. Om du t.ex. utför en uträkning med division, säg mellan heltalen 7 och 2 så kommer uträkningen 7 delat med 2 att bli = 3, fast du förmodligen ville att det skulle resultera i 3,5. Varför det blir så kommer vi se längre fram på sidan om Matematiska Operationer. Men om du behöver göra om en datatyp till en annan så kan vi alltid använda oss av typkonvertering och konvertera från en datatyp till en annan.

Kan inte kompileringen lösa det åt mig?

Nej. Java och många andra kodspråk är så kallade typade språk. Med det menas att vi behöver hålla koll på vilken datatyp variabler har då vi använder dem till olika operationer. Vi behöver helt enkelt berätta för datorn vilken sorts data en viss typ av information är.

Feedback

Lämna gärna feedback med hjälp av stjärnorna nedan och hjälp oss att fortsätta göra sidan bättre.

Feedback

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!