ArrayList i Stringi

0

W książce, na której podstawie teraz się uczę javy podano przykład stworzenia obiektu typu String:

String a = new String("hohoho");

Po to, aby w ten sposób dodać nowy obiekt do array lista:

ArrayList<String> Tablica = new ArrayList<String>();
Tablica.add(a);

Ale jaki jest sens w tym, aby deklarować nowy obiekt typu String z referencją do zmiennej a, skoro można po prostu zrobić String a = "hoho", zamiast korzystać z tego domyślnego konstruktora Stringów? ( new String("hohoho"); )

Rozumiem, że java to język kompletnie obiektowy, ale po co aż tak mieszać? Przecież na poprzednich stronach podręcznika integery deklarowali po prostu, a tutaj ze stringami wywalają takie zamieszanie? :P To ze względu na ArrayList'a?

0

Masz chyba nienajlepszą książkę. Moż tak:

Tablica.add("hoho");
0

Nie ma sensu tworzyć tak Stringów, od tego jest autoboxing. Nawet NetBeans podkreśla takie tworzenie Stringów na źółto.
Edit:
Przemęczony byłem :P

0

Co ma autoboxing to stringow? Pojecia pomyliles.
Takie tworzenie stringow ma sens jesli chcesz aby porownywanie za pomoca == zwracalo false. Przyklad:
String a1 = "aaa";
String a2 = "aaa";
System.out.println(a1 == a2); // true

String a1 = new String("aaa");
String a2 = new String("aaa");
System.out.println(a1 == a2); // false
a1 = a1.intern();
a2 = a2.intern();
System.out.println(a1 == a2); // true

Dziala to tak dlatego ze Java ma cos co sie zwie poolem stringow. intern() dodaje / szuka litelalu w poolu i go zwraca jesli jest, lub dodaje i zwraca jesli nie bylo.

Czy takie cos ma sens zalezy od logiki aplikacji - moim zdaniem moze miec.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0