Java

09/24/2015 19:31 algernong#16
Ich habe es gerade ausprobiert: Hieran optimiert der Compiler nichts, also das "new String()" steht auch noch im Bytecode:
Code:
public class test
{
  public String meh()
  {
    String str = new String();
    str = "Hello World";
    return str;
  }
}
(Ich habe das mit javac compiled und anschließend mit JD-GUI decompiled)

Das selbe ist das auch nicht: new String() legt immer ein neues Objekt an, während "" den leeren String höchstens einmal anlegt, und dann immer wieder das selbe Objekte verwendet. Deswegen liefert auf die Bedingung
Code:
"abc" == "abc" && "" == "" && new String("") != new String("")
wahr, obwohl nicht mit equals() verglichen wird.