Poziom wiedzy wymagany do zrozumienia artykułu: początkujący. Jesteś w trakcie studiowania zadania dotyczącego składni języka Java i zbliżasz się do jego początkowego poziomu.
Właśnie zacząłeś uczyć się języka Java. Jesteś bombardowany terminami niczym z rogu obfitości. Jesteś obciążony tonami informacji technicznych i czasami gubisz się w trzech sosnach. Uwierz mi, skoro już wciągnąłeś się w programowanie, ZAWSZE TAK BĘDZIE (w tym momencie zza ekranu rozbrzmiewa złowieszczy śmiech, a cichy głos, ucięty w połowie zdania, szepcze: „Uciekaj… ratuj się zanim jest już za późno..."). Błędy będą Cię prześladować przez resztę Twojego programowania, nawet jeśli jesteś najlepszym programistą. Jednak to wcale nie jest tak straszne, jak się wydaje.
Jeśli dopiero zacząłeś uczyć się JavaRush, najprawdopodobniej spotkałeś się już z problemami poruszonymi w artykule. W każdym razie będziemy wdzięczni za komentarze opisujące problemy, jakie napotkałeś w pierwszych miesiącach nauki Javy. |
Problem poziomu 0: Zamieszanie z operatorem porównania (==) i operatorem przypisania (=).
Jest to bardzo częsty problem osób, które przechodzą z innych języków programowania. I w ogóle od podstawówki przyzwyczailiśmy się, że
(=)
jest to znak równości. Prosta sztuczka, którą można zastosować do zapamiętania, jest następująca: jeśli wiesz, że zależy Ci tylko na jednej z wartości (przypisujesz jedną do drugiej), używasz pojedynczego
=
znaku „”, w przeciwnym razie, jeśli zależy Ci na wszystkich zmiennych i wartości (porównujesz je) potrzebujesz podwójnego
==
znaku „”.
Problem: użycie operatora porównania (==) do sprawdzenia równoważności ciągów
Co należy zrobić: Pamiętaj, że
żaden obiekt Java nie może być sprawdzany pod kątem równoważności za pomocą(==)
, ponieważ ten operator jest przeznaczony do testowania równości typów pierwotnych.
W przypadku obiektów należy użyć
.equals()
. A
String
w języku Java jest to nic innego jak obiekt (i
immutable
).
Obiekt oznaczony jako Immutable to obiekt, którego stanu nie można zmienić po utworzeniu. W Javie oznacza to, że wszystkie pola instancji klasy są oznaczone jako final i są prymitywami (lub także immutable ). |
Problem: Łączenie ciągów w pętli
Nie próbuj tego sam! Za każdym razem, gdy łańcuchy są łączone, tworzony jest nowy obiekt
String
(jak dowiedzieliśmy się powyżej, ciągi
immutable
są niezmienne). W pewnym momencie zabraknie Ci pamięci lub wykonanie programu zajmie zbyt dużo czasu.
Rozwiązanie. Użyj
StringBuilder
zamiast tego
String
podczas łączenia treści w pętli. Klasy
StringBuilder
używa się, gdy trzeba wprowadzić wiele zmian w ciągu znaków. A takie linie, w przeciwieństwie do
String
, nie są
immutable
.
Problem: wyjątek NullPointer
Tego rodzaju wyjątek występuje, gdy próbujemy użyć wskaźnika zerowego,
null
podczas gdy w rzeczywistości potrzebujemy prawdziwego obiektu.
Wszystkie typy pierwotne mają wartości domyślne. Zatem y int jest 0 i y boolean jest false . Domyślną wartością wszystkich typów referencyjnych, czyli obiektów, jest null . To nie jest obiekt ani typ, to specjalna wartość. Co zasadniczo oznacza „tutaj nic nie ma”. |
Co należy zrobić: Jeśli Twój kod jest napisany w taki sposób, że w pewnym momencie obiekt może zaakceptować wartość
null
, musisz dodać opcję „sprawdź
null
”, zwłaszcza jeśli sam nie tworzysz obiektu. Pamiętaj też, że lepiej zwrócić puste kolekcje niż zbiór
null
„. Byłoby miło również dodać walidację dla pobierających i ustawiających.
Problem: z jakiegoś powodu pętla if / while / for nie działa
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
Co tu jest nie tak? To proste: dodatkowy średnik zepsuł krew setkom tysięcy początkujących programistów Java. Cóż, nie potrzebujesz tego później
if ()
. Z językowego punktu widzenia taka składnia jest całkiem akceptowalna, więc kompilator nie będzie na nią narzekał. Ale kończy instrukcję warunkową, a kod wewnątrz bloku
{}
nigdy nie spełni powyższego warunku.
Rozwiązanie: Zapamiętaj logikę projektu. Znak „
;
” oznacza koniec pewnego bloku, ale tutaj wszystko dopiero się zaczyna.
Problem: Próba dostępu do niestatycznych zmiennych składowych za pomocą metod statycznych (takich jak main)
Rozwiązanie . Problem ten związany jest ze zrozumieniem samego pojęcia
static
. Jeśli tym słowem oznaczona jest metoda, oznacza to, że nie musimy tworzyć instancji klasy, aby wywołać metodę główną. Rozwiązaniem jest zatem dobre zrozumienie „statyki” i zrozumienia jej istoty.
Problem: Próba wynalezienia koła na nowo poprzez rozwój już istniejących bibliotek i narzędzi
Rozwiązanie. Właściwie nie jest to aż tak wielkim problemem. Dla początkującego jest to bardziej przydatne ćwiczenie. Jeśli jednak chcesz skupić się na efekcie, np. stworzeniu wygodnej bazy abonentów, to wyszukanie abonenta w książce telefonicznej to tylko jeden z efektów Twojej aplikacji. W takim przypadku nie ma potrzeby pisania algorytmu wyszukiwania binarnego. Użyj istniejącego (zapewniamy, że ktoś już go napisał przed tobą i znajduje się w standardowych bibliotekach). Dlatego przestudiuj standardowe biblioteki Java w dokumentacji Oracle. Naucz się korzystać z Google, przyzwyczaj się do czytania Stack Overflow i zadawaj pytania na temat
pomocy JavaRush ! ...Oczywiście to nie wszystkie problemy początkujących. Opisz swoje w komentarzach!
Czy jesteś zainteresowany przeczytaniem artykułów związanych z Javą? Dołącz do grupy programistów Java .
Jest tu wiele ciekawych rzeczy.
GO TO FULL VERSION