[Soci SLIP] Re: [java] stringhe uguali?

Enrico Agliotti enrico.agliotti a gmail.com
Lun 2 Apr 2012 13:07:03 CEST


mi rispondo da solo.
Le due espressioni sono equivalenti ma due stringhe letterali uguali
sono create da java come un oggetto solo e quindi i due reference a e
b puntano allo stesso oggetto e sono di fatto uguali, però non bisogna
fidarsi.
Tant'è vero che questo non funziona di nuovo più:

class TestString {
  public static void main(String[] args) {
    String a1 = "ci";
    String a2 = "ao";
    String a = a1 + a2;
    String b = "ciao";
    if (a==b) {
      System.out.println("uguali");
    }
  }
}

Il 02 aprile 2012 12:41, Enrico Agliotti <enrico.agliotti a gmail.com> ha scritto:
> volevo chiederlo privatamente a Lucio, ma non è poi così ot
> (però è solo per chi si interessa a Java)
>
>
> io pensavo che queste due espressioni fossero equivalenti:
> String a = "ciao";
> String a = new String("ciao");
>
>
> perché allora, in questo caso, come mi aspettavo, non funziona
>
> class TestString {
>  public static void main(String[] args) {
>    String a = new String("ciao");
>    String b = new String("ciao");
>    if (a==b) {
>      System.out.println("uguali");
>    }
>  }
> }
>
> ma in questo, sorprendentemente, si?
>
> class TestString {
>  public static void main(String[] args) {
>    String a = "ciao";
>    String b = "ciao";
>    if (a==b) {
>      System.out.println("uguali");
>    }
>  }
> }
>
>
> --
> Enrico Agliotti
> cell. +39-328-0517312
> tel. con segreteria: +39-011-23415553



-- 
Enrico Agliotti
cell. +39-328-0517312
tel. con segreteria: +39-011-23415553




Maggiori informazioni sulla lista Soci