String er en klasse, men hvorfor skal man ikke importere, eller lave objek...

Tags:    java

Hej! Når man erklærer en String, hvordan kan de så være man hverkan skal importere eller lave objekt af klassen? Er det fordi den klasse bliver brugt så meget, at den bare bliver importeret som default, uden du behøver at gøre noget?



5 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 18 karma
Sorter efter stemmer Sorter efter dato
Okay mange tak, men har lige et til spørgsmål :-)

Og når man nu skal bruge metoden toLowerCase() med dotnotation, hvordan kan det så være man skal skrive

variabelNavn.toLowerCase();

og ikke

String.toLowerCase();

????
toLowerCase() er en metode i klassen String, du kan derfor kun kalde denne metode på et objekt af en string. eksempel
Fold kodeboks ind/udJava kode 

Grunden til at du har et variabel navn foran, er ofte fordi du gemmer dine strenge i en variabel. Hvis du kaldte metoden således String.toLowerCase(), ville metoden være et statisk kald, og ville derfor ikke være afhængig af et objekt. en string er et objekt som mange andre, og du kan derfor også behandle strenge som objekter. String objekter er dog lidt specielle, da du ikke behøver at instantierer objekter med new, da String er en sekvens af chars.



Indlæg senest redigeret d. 10.03.2012 23:01 af Bruger #4487
String er en speciel klasse i Java, og den er automatisk importeret via java.lang pakken. Grunden til at du ikke direkte behøver at lave et objekt af String før du skal bruge den, er at en string er en sekvens af chars (CharSequence), og en char er en primitiv datatype.

Tænk på det som at du gjorde dette
Fold kodeboks ind/udJava kode 

Dette er en sekvens af characterer (CharSequence), som bliver givet som parameter til et String objekt. Da String er så ofte brugt, vil ovenstående være det samme som at skrive
Fold kodeboks ind/udJava kode 




Indlæg senest redigeret d. 10.03.2012 12:46 af Bruger #4487
Grunden til at du ikke direkte behøver at lave et objekt af String før du skal bruge den, er at en string er en sekvens af chars (CharSequence), og en char er en primitiv datatype.


Det er nu ikke helt korrekt. En string instans ér et objekt, men er så ofte brugt klasse, at man i Java sproget har valgt at lade programmøren definere dem som object literals. Strenge er altså noget, som håndteres specielt i sproget.

Derfor opretter man også et objekt, med alt hvad dertil hører, når man skriver:
Fold kodeboks ind/udKode 


Siden ovenstående streng er en konstant ligger den i Java klassens constant pool (som er en del af klassefilen), men der oprettes stadig et objekt.

Det har man valgt at gøre, for at spare plads og for at gøre det nemmere for programmøren som ligeså godt kunne have gjort noget i stil med:
Fold kodeboks ind/udKode 


Jeg siger bare "tak" for genvejen :-)



Okay mange tak, men har lige et til spørgsmål :-)

Og når man nu skal bruge metoden toLowerCase() med dotnotation, hvordan kan det så være man skal skrive

variabelNavn.toLowerCase();

og ikke

String.toLowerCase();

????



Indlæg senest redigeret d. 10.03.2012 10:17 af Bruger #16945
Okay, takker mange gange for svaret :)



t