Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Dataöverföring i Java | Djupgående Java-struktur
Java Fördjupad
course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Dataöverföring i Java

Hur överförs information i Java?

Du känner till från föregående kurs att det finns två typer av minne - stack och heap. Låt oss titta på hur data lagras i dessa två minnesområden:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }

Vi har skapat 3 olika variabler. Nedan finns ett diagram som illustrerar hur och var de lagras i minnet:

Låt oss gå igenom vad du observerade i diagrammet:

  • Vi ser String-fält i stackminnet som är länkar till värden i heapminnet. På detta sätt behöver vi inte komma åt heapminnet direkt varje gång. Istället får vi först tillgång till länken i stackminnet, vilket är snabbare än att komma åt heapminnet. Du har redan stött på länkar till värden när du lärde dig om ämnet String Pool;
  • Du kan se att int inte lagras i heapminnet; dess värde lagras direkt i stackminnet. Detta gäller för alla primitiva datatyper (byte, short, int, long, float, double och boolean). Därför passeras primitiva datatyper i Java som värden. Dock är String inte en primitiv datatyp, så dess värde lagras i heapminnet;
  • Ett nytt objekt skapas i heapminnet för varje ny länk. Men om två variabler av samma typ har samma värde, kommer de att referera till samma objekt i heapminnet;
  • Integer Pool är ett område i stackminnet där alla heltalsvärden i intervallet från -128 till 127 är länkade. Denna optimering görs för att förbättra prestandan vid hantering av tal i Java, eftersom tal i detta intervall ofta används. Kom ihåg att stackminnet arbetar snabbare än heapminnet, så vi får snabbare svar tack vare Integer Pool;
  • String Pool är ett område i heapminnet där identiska strängvärden lagras.

Slutsats

I Java passeras allt som värde. För objekt passeras en kopia av referensen, men det faktiska objektet i heapen förblir oförändrat (om det är oföränderligt, som String).

Variabler i stacken lagrar referenser till objekt som finns i heapen. Detta gäller för alla referenstyper, inklusive String.

1. Vad är en Integer Pool i Java?

2. Hur överförs data i Java, genom referens eller genom värde?

question mark

Vad är en Integer Pool i Java?

Select the correct answer

question mark

Hur överförs data i Java, genom referens eller genom värde?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Dataöverföring i Java

Hur överförs information i Java?

Du känner till från föregående kurs att det finns två typer av minne - stack och heap. Låt oss titta på hur data lagras i dessa två minnesområden:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }

Vi har skapat 3 olika variabler. Nedan finns ett diagram som illustrerar hur och var de lagras i minnet:

Låt oss gå igenom vad du observerade i diagrammet:

  • Vi ser String-fält i stackminnet som är länkar till värden i heapminnet. På detta sätt behöver vi inte komma åt heapminnet direkt varje gång. Istället får vi först tillgång till länken i stackminnet, vilket är snabbare än att komma åt heapminnet. Du har redan stött på länkar till värden när du lärde dig om ämnet String Pool;
  • Du kan se att int inte lagras i heapminnet; dess värde lagras direkt i stackminnet. Detta gäller för alla primitiva datatyper (byte, short, int, long, float, double och boolean). Därför passeras primitiva datatyper i Java som värden. Dock är String inte en primitiv datatyp, så dess värde lagras i heapminnet;
  • Ett nytt objekt skapas i heapminnet för varje ny länk. Men om två variabler av samma typ har samma värde, kommer de att referera till samma objekt i heapminnet;
  • Integer Pool är ett område i stackminnet där alla heltalsvärden i intervallet från -128 till 127 är länkade. Denna optimering görs för att förbättra prestandan vid hantering av tal i Java, eftersom tal i detta intervall ofta används. Kom ihåg att stackminnet arbetar snabbare än heapminnet, så vi får snabbare svar tack vare Integer Pool;
  • String Pool är ett område i heapminnet där identiska strängvärden lagras.

Slutsats

I Java passeras allt som värde. För objekt passeras en kopia av referensen, men det faktiska objektet i heapen förblir oförändrat (om det är oföränderligt, som String).

Variabler i stacken lagrar referenser till objekt som finns i heapen. Detta gäller för alla referenstyper, inklusive String.

1. Vad är en Integer Pool i Java?

2. Hur överförs data i Java, genom referens eller genom värde?

question mark

Vad är en Integer Pool i Java?

Select the correct answer

question mark

Hur överförs data i Java, genom referens eller genom värde?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 2
some-alt