ArrayList i Stringi

ArrayList i Stringi
Y2
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 9 lat
  • Postów:34
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:

Kopiuj
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:

Kopiuj
Tablica.add("hoho");
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 3 godziny
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


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.