Wpis z mikrobloga

@krzysio19: @nielu: teoretycznie wszystko w # i javie jest obiektem i nie wiem czy operator == nie jest domyślnie przeciążoną metodą na porównywanie referencji w obiekcie. Skoro obiekt klasy string ma pustą referencję czy tam jest nullem a próbuję wywołać z niego operator porównania to może wyrzucić wyjątek.

No chyba że nieprzeciążone operatory porównania są gdzieś ponad klasami.

Na testach wychodzi że działa, ale po coś w .net używa się
@Wyrewolwerowanyrewolwer:
No tak, czyli jeśli:
String a = new String("x");
if(a == "x") - > true, bo nowa instancja "x" będzie tym samym obiektem co a o tej samej referencji.

String a = "x";
String b = "x";
if(a == b) - > To samo, to będą te same komórki pamięci

Ale co jeśli:
String a = new String("x");
String b = new String("x");
if(a == "x") ?

Jaką referencję będzie
@JBFC:
No właśnie nie ( ͡° ͜ʖ ͡°)

String a = new String("x");

if(a == "x")

Będzie false.
Musisz zrobić:

if(a.equals("x"))

Ale, gdybyś zrobił String a = "x", to jakaś tam szansa jest że zadziała przez trafienie w cache (o ile dobrze pamiętam, ale lepiej pytać GoToFinal, on to dość dobrze ogarnia).

String a = "x";

String b = "x";

if(a == b);

True, a == b