Bedeutung von [Ljava.lang.String;@6eb38a

mrbela

Bekanntes Mitglied
Hey Leute!

Ich hab ein Minimalbeispiel um meine Frage zu schildern:

Java:
	public static void main(String[] args) {
		
		String[] test = {"Hans", "Müllers"};
		
		System.out.println(test);
	}

die Ausgabe von dem ganzen ist:

Code:
[Ljava.lang.String;@6eb38a

Jetzt meine Frage:
1. Was bedeutet das
Code:
[L
genau? Wohl mehr als "Array"?! Denn ich hab es im Netz auch schon mit "[S" gesehen, wenn ich mich nicht täusche...
2. java.lang.String ist der Typ
3. @6eb38a die Speicheradresse.

Liege ich bei 2. und 3. richtig??

Und was ist 1. genau.


Ich danke Euch für Eure Hilfe!
 
[L steht für ein Object-Array mit der zugehörigen Klasse dahinter,
[S für short[], die anderen primitiven Datentypen haben auch was feines

Rest stimmt
 
leider nicht ganz korrekt ...

für das array selbst steht nur "[" ...

"L" steht für "literal" und ist die kennzeichnung das die folgende zeichenkette bis zum nächsten ";" einen vollen klassennamen angibt ... somit ist "L" bereits die typenkennzeichnung : "non-primtive/extends Object" ...

und der rest ist auch falsch ... denn "@6eb38a" ist NICHT die speicher adresse ... genau genommen ist "@6eb38a" ein zusammengesetzter term bestehend aus "@" und "6eb38a" ...

"@" wird von "Object.toString()" also trenner eingefügt ... und der rest der dann folgt ist der HASHCODE in HEX den "Object.hashCode()" liefert ...

Object.toString() ist nämlich so implementiert

Java:
return getClass().getName() + "@" + Integer.toHexString(hashCode());


@Slater
ich bin einfach nur ENTTÄUSCHT das gerade DU eine so falsche antwort gibst ... ich weis das menschen nicht unfehlbar sind ... aber solche banalen grundlagen solltest DU wissen ...
 
"L" steht für "literal" und ist die kennzeichnung das die folgende zeichenkette bis zum nächsten ";" einen vollen klassennamen angibt ... somit ist "L" bereits die typenkennzeichnung : "non-primtive/extends Object" ...
also genau meine Aussage 'Object-Array mit Klassenname dahinter, Unterscheidung zu primitiven Arrays'
und der rest ist auch falsch ... denn "@6eb38a" ist NICHT die speicher adresse ... genau genommen ist "@6eb38a" ein zusammengesetzter term bestehend aus "@" und "6eb38a" ...
wer sollte das @ verkennen, zufälliges kodiertes Zeichen? lächerlich
der Begriff 'Speicheradresse' ist auch ein bekanntes (nicht richtiges) Synonym für hashCode(),

http://www.java-forum.org/allgemeine-java-themen/81380-hashcode-speicheradresse-nur-int.html
Threads mit "Ich bekomme nur immer die Speicheradresse der Variable ausgegeben." usw.

niemand wagt bei sowas in oberflächlicher Betrachtung zu analysieren wie wohl interne Adressen in Java real aussehen usw.,
es geht einfach nur um eine ungefähre Bedeutung/ Vorstellung zu den Zahlen, gerade auch durch das @ = 'an' suggeriert,
alles richtig hier, auf Speicheradresse kann man nur kommen wenn man von hashCode() weiß

@Slater
ich bin einfach nur ENTTÄUSCHT das gerade DU eine so falsche antwort gibst ... ich weis das menschen nicht unfehlbar sind ... aber solche banalen grundlagen solltest DU wissen ...
solche Enttäuschungen verteile ich gerne 😉
 
Zuletzt bearbeitet von einem Moderator:
bei dir kam einfach die trennung von "[" und "L...;" nicht richtig raus ...

und um dir deine schöne theorie vom angeblich falschen synonym zu zerstreuen : wenn man hashCode() so überschreibt das man z.b. nur primtives verrechnet hat das ja wohl gar nichts mehr mit irgendwelchen speicher-adressen zu tun ... denn an die pointer der primitives wird man wohl kaum rankommen ...

daher finde ich es "lächerlich" sowas auch nur zu erwähnen ... denn es ist einfach falsch ...

klar sugeriert die DOC das da schon irgendwas mit irgendwelchen internen werten rauskommt ... aber das sich da irgendwas explizit auf irgendwelche virtuellen/realen speicher-adressen bezieht steht so auch wieder nicht drin
 
und um dir deine schöne theorie vom angeblich falschen synonym zu zerstreuen : wenn man hashCode() so überschreibt

Und wenn ich jetzt toString() überschreibe, sind dann alle eure Aussagen falsch 😛opcorn:?
 

Zurück
Oben