Java erbjuder åtta primitiva datatyper och ett stort antal komplexa datatyper. Dessa avgör vilka värden som kan lagras och visas i en variabel. Vissa datatyper tilldelas alla variabler i Java.

Vilka datatyper finns det i Java?

I varje pro­gram­me­rings­språk finns det olika datatyper som in­ne­hål­ler specifika objekt och de­fi­ni­e­ra­de ope­ra­tio­ner. Även om da­ta­typsal­ter­na­ti­ven som erbjuds av olika språk ofta liknar varandra, finns det ibland betydande skill­na­der. Om du till exempel jämför Python och Java och deras datatyper kommer du att märka likheter mellan de två, men också många skill­na­der som gör språken lämpliga för olika typer av uppgifter.

Java använder två olika typer av datatyper: primitiva och komplexa. Komplexa datatyper kallas även re­fe­ren­sty­per. Primitiva och komplexa datatyper skiljer sig åt i storlek och avgör vilka värden som kan lagras i en variabel. Medan primitiva datatyper endast kan lagra enkla värden, används re­fe­ren­sty­per för att skapa mer komplexa struk­tu­rer och or­ga­ni­se­ra och ma­ni­pu­le­ra stora mängder data.

Om du vill lära dig att pro­gram­me­ra är det viktigt att inte bara känna till de olika da­ta­ty­per­na, utan också hur du får ut mesta möjliga av var och en av dem. För att förstå hur man bäst använder da­ta­ty­per­na måste man inte bara förstå deras funk­tio­na­li­tet, utan också hur mycket minne de använder (eller sparar).

Vad är primitiva datatyper i Java?

Det finns totalt åtta olika primitiva datatyper i Java, som in­ne­hål­ler fast de­fi­ni­e­ra­de vär­de­in­ter­vall. De kan delas in i fyra ka­te­go­ri­er: logiska datatyper, in­te­gre­ra­de datatyper, flyt­tals­da­ta­ty­per och tec­ken­da­ta­ty­per. De har inga yt­ter­li­ga­re spe­ci­al­funk­tio­ner och kallas även ele­men­tä­ra datatyper. Varje datatyp har ett fast antal bitar. Vi går igenom primitiva datatyper mer de­tal­je­rat nedan. Java använder följande primitiva typer:

  • boolean
  • byte
  • kort
  • int eller heltal
  • lång
  • float
  • dubbel
  • tecken

boolean

Javas boo­le­ans­ka datatyp är inte en numerisk typ. Den erbjuder endast två möjliga värden: true och false. Den kan användas för att avgöra om ett villkor gäller (true) eller inte (false). Det är en logisk datatyp och dess stan­dard­vär­de är false. Den består av 1 bit och har följande syntax:

boolean booleanVar;
java

byte

byte är en in­te­gre­rad datatyp som re­pre­sen­te­ras som ett två­kom­ple­ment­vär­de med en storlek på 8 bitar eller 1 byte. Den används van­ligt­vis för att spara minne i större matriser. Dess vär­de­in­ter­vall sträcker sig från -128 till 127, och dess stan­dard­vär­de är 0. Här är dess syntax:

byte byteVar;
java

short

short är också en av de in­te­gre­ra­de da­ta­ty­per­na i Java och används främst för att spara minne i större matriser. Två­kom­ple­ment­vär­det i sig är 16 bitar eller 2 byte stort och dess vär­de­in­ter­vall sträcker sig från -32768 till och med 32767. Som standard är dess värde 0. Så här används short:

short shortVar
java

int eller heltal

int eller heltal är också ett två­kom­ple­ment­vär­de och en in­te­gre­rad datatyp med en storlek på 4 byte eller 32 bitar. Dess vär­de­in­ter­vall omfattar heltal mellan -2147483648 och 2147483647 och dess stan­dard­vär­de är 0. Dess syntax är som följer:

int intVar
java

long

Den största in­te­gre­ra­de datatypen är long. Detta gäller för det första dess vär­de­in­ter­vall, som ligger mellan -9223372036854775808 och 9223372036854775807, och för det andra dess egen storlek, som är 8 byte eller 64 bitar. Två­kom­ple­ment­vär­det används därför om de andra in­te­gre­ra­de da­ta­ty­per­na inte är till­räck­li­ga. Det kräver dock också klart mest minne. Dess stan­dard­vär­de är 0. Detta är dess syntax:

lomg longVar
java

float

float är en flyt­tals­da­ta­typ och används för att lagra reella tal. Den har en storlek på 32 bitar och över­ens­stäm­mer med IEEE 754-stan­dar­den, som de­fi­ni­e­rar stan­dar­dre­pre­sen­ta­tio­nen av binära och decimala flyttal i datorer. Stan­dard­vär­det för float är 0,0 och upp till sju decimaler kan re­pre­sen­te­ras i dess vär­de­in­ter­vall. Jämfört med double är float dock inte lika exakt och bör därför inte användas för värden där precision spelar en avgörande roll. Om så inte är fallet kan du dock använda float för att spara utrymme. Syntaxen för float är följande:

float floatVar;
java

double

double är ungefär dubbelt så exakt som float och fyller ett liknande syfte. Den är 64 bitar stor och kan re­pre­sen­te­ra upp till 16 decimaler. Dess stan­dard­vär­de är också 0,0. Om du behöver mer exakta värden bör du alltid använda double, även om denna datatyp inte heller är särskilt exakt. Om du vill arbeta med absolut exakta värden bör du istället använda klassen Big­De­ci­mal. Syntaxen för double är följande:

double doubleVar;
java

char

char är en tec­ken­da­ta­typ. Den lagrar tecken baserat på Unicode-tec­ken­sat­sen, vilket möjliggör por­ta­bi­li­tet till många olika platt­for­mar. Varje tecken kräver 2 byte minne. Dess vär­de­in­ter­vall motsvarar ASCII (American Standard Code for In­for­ma­tion In­ter­change) och ligger mellan ‘\u0000’ (dvs. 0) och ‘\uffff’ (motsvarar 65535). Stan­dard­vär­det för char är ‘\u0000’ och dess syntax ser ut så här:

char charVar
java

Vad är komplexa datatyper i Java?

Den andra typen av datatyper i Java är re­fe­ren­sty­per, även kallade komplexa datatyper. De kallas re­fe­ren­sty­per eftersom de refererar till objekt. Till skillnad från primitiva datatyper är de normalt inte för­de­fi­ni­e­ra­de, utan bestäms av pro­gram­me­ra­ren (ett undantag är strängar). De kan använda metoder och kan också ha värdet 0 (i be­ty­del­sen tom). Medan primitiva datatyper börjar med en gemen bokstav, börjar re­fe­ren­sty­per med en versal. Här tittar vi på de vik­ti­gas­te re­fe­ren­sty­per­na.

Strängar

String är en klass som kan användas för att re­pre­sen­te­ra en sekvens av tecken, vilket skiljer denna komplexa datatyp från den primitiva datatypen char samt andra datatyper. En sträng existerar som ett objekt i klassen java.lang. De olika metoderna i klassen String gör det möjligt att undersöka enskilda tecken i strängen, jämföra strängar med varandra, söka i strängar och kopiera strängar. Strängar iden­ti­fie­ras med citat­tec­ken. Syntaxen för denna re­fe­ren­styp ser ut så här:

<string_type> <string_variable> = "<string_sequence>";
java

Här är ett exempel på hur strängar fungerar:

// How to create a string without a new operator
String a = "This is your new string";
/ / How to create a string with a new operator
String a1 = new string ("This is your new string");
java

Matriser

Arrayer används för att lagra flera värden i en variabel istället för att skapa olika variabler för varje enskilt värde. De skapas med hjälp av hak­pa­ren­te­ser. De lagrade värdena placeras i klamrar och separeras med kom­ma­tec­ken. Här är syntaxen för arrayer:

dataType[] arrayName = {value1, value2, value3,…};
java

Om du vill skapa en array med strängar kan du göra så här:

String[] colors = {"blue", "red", "yellow", "purple"};
java

Så här skapar du en array med heltal:

int[] figures = {5, 10, 15, 20};
java

Klasser

I Java är klasser datatyper som fungerar som mallar för att skapa objekt. De in­ne­hål­ler olika kom­po­nen­ter, inklusive klassens namn, mo­di­fi­e­ra­re och en kropp in­ne­slu­ten i klamrar. Här är ett exempel på hur en klass ser ut i Java:

public class Main {
	int a = 10;
}
java

Gräns­snitt

I Java är ett gräns­snitt en abstrakt klass. Det fungerar som ett gräns­snitt genom vilket en klass kan komma åt olika funk­tio­ner. För att kunna göra detta måste den dock först im­ple­men­te­ra dem. Gräns­snitt in­ne­hål­ler endast kon­stan­ter och abstrakta metoder. Deras syntax ser ut så här:

interface {
	abstract methods
}
java

Vi ska här visa ett enkelt exempel på hur gräns­snitt fungerar:

interface Pizza {
	public void ingredientsList();
	public void preparation();
}
class Mushroom implements Pizza {
	public void ingredientsList() {
		System.out.println("mushrooms, tomato sauce, oregano, mozzarella");
}
public void preparation() {
	System.out.println("The pizza will be ready in 15 minutes.");
}
}
class Main {
	public static void main(String[] args) {
		Mushroom myMushroom = new Mushroom();
		myMushroom.ingredientsList();
		myMushroom.preparation();
	}
}
java

Mot­sva­ran­de utdata från Java-kommandot System.out.println ser ut så här:

mushrooms, tomato sauce, oregano, mozzarella
The pizza will be ready in 15 minutes.
java

Objekt

I Java är objekt också en komplex datatyp. Objekt är instanser av klasser som sedan kan in­te­ra­ge­ra med varandra med hjälp av metoder. I följande exempel ska vi skapa flera objekt i en Main-klass:

public class Main {
	int a = 10;
public static void main(String[] args) {
	Main myObj1 = new Main();
	Main myObj2 = new Main();
	System.out.println(myObj1.a);
	System.out.println(myObj2.a);
	}
}
java

Re­sul­ta­tet ser ut så här:

10
10
java

Enu­me­re­ring­ar

Enums är en speciell klass som gör det möjligt att införliva oför­än­der­li­ga kon­stan­ter i din kod. Dessa variabler tilldelas fasta värden som inte kan ändras. Denna datatyp är särskilt användbar om du behöver variabler som endast ska ha ett fåtal möjliga tillstånd. Syntaxen för en enum ser ut så här:

enum NameOfTheClass {
	VALUE1,
	VALUE2,
	VALUE3
}
java
Gå till huvudmeny