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ördjupning

bookDataöverföring i Java

Hur information överförs i Java

Från föregående kurs vet du 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 visas 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 String Pool-ämnet;
  • 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. Däremot ä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

Suggested prompts:

Can you explain more about the difference between stack and heap memory?

What is the String Pool and how does it work in Java?

Can you give an example of how passing by value works with objects in Java?

Awesome!

Completion rate improved to 2.63

bookDataöverföring i Java

Svep för att visa menyn

Hur information överförs i Java

Från föregående kurs vet du 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 visas 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 String Pool-ämnet;
  • 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. Däremot ä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