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



## mrbela (22. Jan 2013)

Hey Leute!

Ich hab ein Minimalbeispiel um meine Frage zu schildern:


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

die Ausgabe von dem ganzen ist:


```
[Ljava.lang.String;@6eb38a
```

Jetzt meine Frage:
1. Was bedeutet das 
	
	
	
	





```
[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!


----------



## SlaterB (22. Jan 2013)

[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


----------



## tröööt (23. Jan 2013)

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


```
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 ...


----------



## SlaterB (23. Jan 2013)

tröööt hat gesagt.:


> "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


----------



## tröööt (24. Jan 2013)

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


----------



## Tomate_Salat (24. Jan 2013)

> 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:?


----------



## SlaterB (24. Jan 2013)

viel Erfolg beim Überschreiben für Array


----------



## Tomate_Salat (24. Jan 2013)

SlaterB hat gesagt.:


> viel Erfolg beim Überschreiben für Array



Hab noch nie mit gearbeitet, aber vllt hätte man Erfolg mittels AspectJ :reflect:


----------

