4 svar
101 visningar
sampledragon5 är nöjd med hjälpen
sampledragon5 495
Postad: 13 okt 2021 18:38 Redigerad: 13 okt 2021 18:41

Class typ

Hej! 

 

private String a = "hej";

 

innebär detta att variabeln a refererar till en String objekt med värdet "hej" ? 

Om det skulle stå följande;

 

private String a;

så innebär detta att instancevariablen a refererar till ett String objekt?  

jag undrar nämligen för vissa sidor säger att a är ett objekt medan andra säger att a refererar till ett objekt. Jag har även stött på sidor som säger att the string literal dvs "hej" är ett objekt

CurtJ 1143
Postad: 13 okt 2021 18:47

värdet i a är en pekare till minnesarean där String-objektet är lagrat så i den meningen är det en referens. I dagligt tal säger man att a är objektet och String är klassen så man bortser från att a "bara" är en referens till objektet. Ut programmerarens synvinkel spelar det ingen roll.

sampledragon5 495
Postad: 13 okt 2021 19:01

Tack för att du svarade !! jag har bara en sista fråga om samma ämne

public MusicOrganizer()
{
files = new ArrayList<String>();
} Om man kollar på denna konstruktor så ser vi att ett objekt av klassen ArrayList skapas och files refererar till ArrayList objektet ( antar jag). Men sparar ArrayList Objektet string objekt? Så som jag har fattat det så sparar ArrayList objektet string literals men jag har läst att string literals är objekt för om det stämmer så borde kodraden String a = "hej"; innebära att "hej" är ett objekt dvs den koden bör då innebära att variabeln a refererar till  "hej" som då är ett objekt men när man skriver den raden så brukar man ju säga att a är lika med "hej" . Så är då a lika med "hej" OCH så refererar a till objektet "hej" ? 

CurtJ 1143
Postad: 13 okt 2021 19:12

ArrayList-objektet lagrar referenser till String-objekt och en String-variabel är alltid en referens till ett String-objekt.

En string-literal ("hej") är en konstant sträng, dvs den har ett värde men saknar metoder MEN java-kompilatorn kan hantera den som ett String-objekt om man t ex skriver "hej".substring(1) så det ÄR en konstant (och tar mindre minne än ett String-objekt) men för programmeraren spelar det ingen roll då den kan hanteras som vilket String-objekt som helst. Med det sagt så är äver String-objekt konstanter, de kan inte ändras (immutable på programmeringsengelska) utan har det värde de har skapats med. Att du ändå kan skriva kod som ser ut som att värdet ändras hanterar kompilatorn så att den skapar nya String-objekt eller StringBuffer beroende på vad du gör. Som sagt, som programmerare behöver du inte tänka så mycket på det.

Btw, det finns inga sista frågor. Det dyker alltid upp nya och du är välkommen igen när det sker :)

sampledragon5 495
Postad: 13 okt 2021 19:22

Tack så jättemycket det mycket klarare i huvudet efter din förklaring!!!! 

Svara Avbryt
Close