Return by value mit String??

Status
Nicht offen für weitere Antworten.
Fredy

Fredy

Mitglied
Hallo Java Guru,
ich hab ein kleine Problem, und zwar habe ich eine Methode, der ich einen (leeren) String übergebe. In der Methode selbst erzeuge ich einen StringBuffer, fülle diesen ab und möchte ihn dann dem String zuweisen. Das Problem ist nun, dass die Zuweisung zwar funktioniert, aber sobald der Programmablauf ausserhalb dieser Methode ist, der String wieder den alten Wert annimmt. Wer kann mir da weiterhelfen?
Hier noch der Code:
Code:
public void getProperty (String property)
{
	StringBuffer strBuf = new StringBuffer();
	// fuelle den StringBuffer mit Daten ab
	fillUp(strBuf);
	
	// kopiere den StringBuffer in den String
	property = strBuf.toString();
}

Es ist mir zwar klar, dass property als Referenz übergeben wird. Mir ist aber nicht klar, weshalb das Objekt strBuf wieder gelöscht wird, obwohl es noch referenziert wird.
Gelöst hab ich das Problem nun, indem ich direkt den StringBuffer übergebe und ihn nicht erst in der Methode erzeuge. Aber das müsste doch auch anders gehn, oder?
Hat jemand eine Idee?

Gruss Fredy
 
M

mariopetr

Bekanntes Mitglied
tja, das het mit java nicht.
am einfachsten wird es sein, den string als returnwert rauszureichen
 
A

aquanox

Mitglied
Hi,

die Erklärung sollte nicht allzu schwer sein.

Ähnlich wie bei primitiven Datentypen (char, int, ...) wird der String nicht als Objekt übergeben.

Code:
public void getProperty (String property)
{

  // Du ruft die Methode nun auf mit getProperty(stringvar)
  // Allerdings wird bei einem String nicht die Referenz darauf zurückgegeben sondern
  // der Compilter könnte daraus sowas machen: getProperty(stringvar.toString()).
  // Das bedeutet, dass nun nur der Inhalt übergeben und dann hier in der Variable
  // property gespeichert wird. Problem liegt auf der Hand: property ist nur für die
  // eine Methode gültig, genauso wie strBuf, denn das Objekt wird ja lokal erstellt.
  // Lösung könnte sein, gleich ein StringBuffer Objekt zu übergeben oder mit einem
  // Rückgabeparameter zu arbeiten.

   StringBuffer strBuf = new StringBuffer();
   fillUp(strBuf);
   
   property = strBuf.toString();
}
 
M

mariopetr

Bekanntes Mitglied
na aber hallo,

der string wird sehr wohl als object uebergeben. das hat aber mit dem problem auch garnichts zu tun. da java prinzipiell call by value nutzt.

siehe dazu
Code:
public class Val
{
	public static void main(String[] args)
	{
		Val v=new Val();
		Object test=new Object();
		System.out.println(test);
		v.test(test);
		System.out.println(test);
		
	}
	
	void test(Object aObject)
	{
		aObject=new Object();
		System.out.println("new ="+aObject);
	}
}

Edit:
Bitte Code-Tags benutzen!
 
A

aquanox

Mitglied
Moin,

klar wird der String als Objekt übergeben, allerdins wird die Referenz dann nicht gespeichert sondern der Text. Nichts anderes wollte ich oben verdeutlichen.
 
Fredy

Fredy

Mitglied
Herzlichen Dank für die Antwort!!

Ich habs jetzt gelöst, indem ich in der Methode einen StringBuffer erzeuge und ihn per 'return' zurück gebe. :D:D

Gruss und Dank Fredy

:wink: :wink:
 
D

DTR

Bekanntes Mitglied
Es wird schon die Referenz gespeichert. Bei Strings ist es nur das problem, das diese nicht geändert werden können. D.h.

String a = "Hallo";
a = a + "wie gehts?";

der neue String wird nicht im selben Objekt gespeichert, sonder es wird ein neues Objekt mit dem Wert "Hallo wie gehts" angelegt und der Zeiger a zeigt auf dieses neue Objekt. Das ist auch der grun für das Problem, das die Anwendungen so verdammt langsam werden, wenn man Strings direkt zusammen setzt anstatt einen StringBuffer zu verwenden.

Die beste Lösung für dein Problem ist es wohl den String als Rückgabewert zu übergeben oder statt einem String einen StringBuffer zu verwenden, dann geht es.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Direktes return eines Array geht nicht Allgemeine Java-Themen 20
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
I Java Optionals mit return-Block Allgemeine Java-Themen 2
R missing return statement Allgemeine Java-Themen 13
V int Array einer return Methode übergeben? Allgemeine Java-Themen 4
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
B XAResource[] return statement Allgemeine Java-Themen 3
V Wildcard aus Parameter in return type Allgemeine Java-Themen 2
P Return oder Global Allgemeine Java-Themen 3
W Rekursion-Probleme mit return Allgemeine Java-Themen 35
Dragonfire Code Konvention for-Schleife / return Allgemeine Java-Themen 15
B boolean return typ verwenden? Allgemeine Java-Themen 5
R return in try-catch-Blöcken Allgemeine Java-Themen 6
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
H return bei Methode Allgemeine Java-Themen 2
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
hdi dynamische return-Werte Allgemeine Java-Themen 15
M Problem mit return-werten Allgemeine Java-Themen 35
B Warum return type Object ? Allgemeine Java-Themen 4
D public boolean return Allgemeine Java-Themen 8
M return-Statement Allgemeine Java-Themen 5
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
M java-doc: @return mehrzeilig gestalten Allgemeine Java-Themen 3
L return-Funktion Allgemeine Java-Themen 5
L return Funktion Allgemeine Java-Themen 6
G return bei generiertem code Allgemeine Java-Themen 6
S Fehler beim return eines String Arrays Allgemeine Java-Themen 3
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S @Value mit bestimmt Werten, sonst default Allgemeine Java-Themen 42
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
B HashMap aus Value Key bekommen Allgemeine Java-Themen 2
F Unterschied zwischen NormalizedValue und Value Allgemeine Java-Themen 5
Q For-Schleife in String-Value Allgemeine Java-Themen 3
L Variablen HashMap nimmt value nicht an Allgemeine Java-Themen 3
M Java - Call by value <-> Call by reference Allgemeine Java-Themen 16
B Load of Known null Value Allgemeine Java-Themen 9
T Hashmap mit geordneter/ungeordneter liste als Value Allgemeine Java-Themen 5
algorismi int-variable Value Change event Allgemeine Java-Themen 3
G HTTP key-value-paar Allgemeine Java-Themen 8
J Map nach value sortieren Allgemeine Java-Themen 14
G Verschachtelte Treemaps, nach Value sortieren Allgemeine Java-Themen 11
faetzminator Regex zur Suche von "value-losen" Attributen in HTML Tags Allgemeine Java-Themen 7
B Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
G Generics in Map. Type of value abhängig vom key Allgemeine Java-Themen 3
S Map die die auch ein getKey(value) erlaubt? Allgemeine Java-Themen 2
MQue call by value Allgemeine Java-Themen 5
F Javadoc: @value tag nicht für private fields? Allgemeine Java-Themen 11
P call by value/referenz Allgemeine Java-Themen 4
N Sieht aus wie ein "Call by Referece/Call by Value" Allgemeine Java-Themen 7
S Call by Value Allgemeine Java-Themen 9
T [TreeMap] Corresponding value to a key Allgemeine Java-Themen 10
V Objekt aus Session als copy by value bekommen Allgemeine Java-Themen 4
R Wert in Hashtable ändern (Key ändern, Value bleibt) Allgemeine Java-Themen 3
H Aus der FAQ: Call by Value <-> Call by Reference Allgemeine Java-Themen 8
C Map(Key/Value) mit mehreren Values Allgemeine Java-Themen 16
M Value als String in beliebige Klasse konvertieren Allgemeine Java-Themen 18
L String zu repräsentativen Wert Allgemeine Java-Themen 0
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
L regex ganzer string? Allgemeine Java-Themen 2
L Ist ein string ein erlaubter variabel name? Allgemeine Java-Themen 2
Z JNA Cpp-DLL String Verwendung Allgemeine Java-Themen 2
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
N String Array Eingabe Allgemeine Java-Themen 6
M Datum von String zu LocalDateTime Allgemeine Java-Themen 8
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
R char aus String entfernen Allgemeine Java-Themen 10
L Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Ini Text aus String parsen Allgemeine Java-Themen 1
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
M String lässt sich nicht Zusammenfügen Allgemeine Java-Themen 10
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
R Variablen String mit split-Funktion aufteilen Allgemeine Java-Themen 7
F Datei in String-Array einlesen Allgemeine Java-Themen 8
S Marker aus String ermitteln Allgemeine Java-Themen 5
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
M Bei String.format ein Komma statt einem Punkt ausgeben lassen Allgemeine Java-Themen 1
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
J String - Vergleiche Allgemeine Java-Themen 7
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
G CSV in String Allgemeine Java-Themen 7
P String-Verschlüsselung - Frage zur Sicherheit Allgemeine Java-Themen 21
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
Xge Replace x Zeichen aus String Allgemeine Java-Themen 2
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
F In String 2 Buchstaben vertauschen Allgemeine Java-Themen 2
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
J Falls der String ein "X" beinhaltet Allgemeine Java-Themen 2
T String mehrere Worte Allgemeine Java-Themen 2
D String Groß-/Kleinschreibung Allgemeine Java-Themen 2
D String und Klassenvariable Allgemeine Java-Themen 6
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Anzeige

Neue Themen


Oben