Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich lese gerade ein Buch über Java. In diesem werden zwei Möglichkeiten vorgestellt einem String einen text zuzuweisen:
(leider wird der Unterschied nicht genau erklärt)
Code:
// 1.Möglichkeit mit Konstruktor
String obj = new String("text");
//2.Möglichkeit ohne Konstruktor
String obj = "text";
Gibt es einen gravierenden Unterschied oder ist es eigentlich egal was man in der Regel verwendet?
Bei der ersten Möglichkeit bekommst Du auf jeden Fall ein neues Objekt, bei der zweiten möglicherweise nicht - je nachdem, ob das selbe Literal nochmal woanders verwendet wird.
Code:
String a = "hallo";
String b = "hallo";
String c = new String("hallo");
Man sollte dazu sagen, dass der Konstruktor String(String) völlig überflüssig ist und niemals verwendet werden sollte.
Leider ist er in 1.6 immer noch nicht deprecated.
Mit diesem Konstruktor erzeugt man ein neues String-Objekt, mit dem man nicht mehr und nicht weniger anstellen kann als mit dem ursprünglichen String - die Operation ist also ziemlich sinnlos.
Völlig sinnlos ist er nicht. Mir hat er mal geholfen, als ich Objekte, die ich im Programm brauchte, komplett über Reflection aus einer XML-Datei erstellt habe.
Ich habe mir eine entsprechende XML-Struktur aufgebaut, die für alle Arten von Objekten identisch war, so dass ich im Programm keine Unterscheidung machen musste. Somit konnte ich im Java-Programm entsprechend der Angaben in der XML-Datei, wo auch die Parameter für den Konstruktur und der Klassenname abgelegt war, die Objekte erzeugen.
Jep, da auch, wenn man einen String mit new String("sdsd") anlegt und diesen an eine Methode übergeben wird, nur Call-By-Value und nicht Call-By-Reference gilt.
Jep, da auch, wenn man einen String mit new String("sdsd") anlegt und diesen an eine Methode übergeben wird, nur Call-By-Value und nicht Call-By-Reference gilt.
Verstehe ich nicht vollständig; da Strings doch immutable sind, sollte es da nicht völlig egal sein, ob man einer Methode einen String s oder aber new String( s) übergibt.
Jep, da auch, wenn man einen String mit new String("sdsd") anlegt und diesen an eine Methode übergeben wird, nur Call-By-Value und nicht Call-By-Reference gilt.
Verstehe ich nicht vollständig; da Strings doch immutable sind, sollte es da nicht völlig egal sein, ob man einer Methode einen String s oder aber new String( s) übergibt.
Jep, da auch, wenn man einen String mit new String("sdsd") anlegt und diesen an eine Methode übergeben wird, nur Call-By-Value und nicht Call-By-Reference gilt.
Jep, da auch, wenn man einen String mit new String("sdsd") anlegt und diesen an eine Methode übergeben wird, nur Call-By-Value und nicht Call-By-Reference gilt.
Naja, die Übergabe von einer Referenz per Call-by-Value ist ja nichts anderes als Call-by-Reference.
Murray hat folgendes geschrieben::
Timmah hat folgendes geschrieben::
Jep, da auch, wenn man einen String mit new String("sdsd") anlegt und diesen an eine Methode übergeben wird, nur Call-By-Value und nicht Call-By-Reference gilt.
Verstehe ich nicht vollständig; da Strings doch immutable sind, sollte es da nicht völlig egal sein, ob man einer Methode einen String s oder aber new String( s) übergibt.