KierunekJavaPL JavaCheatSheet
KierunekJavaPL JavaCheatSheet
KierunekJava.pl
WPROWADZENIE
Dzięki Javie można przygotować wiele różnych typów aplikacji, takich jak mobilne,
desktopowe, czy webowe. Java wywodzi się głównie z dwóch popularnych języków
programowania C++ oraz Smalltalk, czerpiąc z nich to, co najlepsze.
EKOSYSTEM JAVA
Java Runtime Environment (JRE) –
Maszyna wirtualna (JVM) + biblioteki
Java Development Kit (JDK) = JRE +
narzędzia deweloperskie:
javac - kompilator java
java - maszyna wirtualna Javy
jar – obsługa archiwów
jdb - debugger klas Java
javadoc - generator dokumentacji
klas w formacie HTML
https://stormit.pl/instalacja-jdk/
Taka modułowość w Javie pozwala nam rozbić duże programy na mniejsze bloki
konstrukcyjne, które są łatwiejsze do zrozumienia i ponownego użycia.
METODA MAIN
Metoda main to najważniejsza metoda w Javie, od której rozpoczyna się wykonanie
całego programu. To punkt „wejściowy”, gdzie zaczyna się nasza aplikacja.
Metoda ta musi posiadać odpowiednią sygnaturę. W przeciwnym wypadku zostanie
potraktowana jak każda inna metoda
KOMENTARZE
Komentarze to swego rodzaju zapiski programisty w kodzie aplikacji.
Ich celem jest przekazanie jakiejś informacji dla siebie samego lub dla innych osób
czytających ten kod.
TYPY KOMENTARZY
W Javie mamy dwa typy
komentarzy:
Do końca linii
Blokowe – czyli takie, które
mogą zawierać kilka linii
KOMENTARZE – NA CO UWAŻAĆ?
PSEUDOKOD
Dość często spotykaną praktyką jest najpierw pisanie komentarzy, a dopiero na ich
podstawie tworzenie właściwego kodu. Powstaje w ten sposób tak zwany: pseudokod – czyli
fragmenty kodu pomieszane z komentarzami.
Rezygnuje się w nim ze ścisłych reguł składniowych narzuconych przez kompilator
na korzyść prostoty zapisu i czytelności. Pomijane są również szczegóły implementacyjne.
Dzięki temu bardzo szybko można spisać algorytm i dopiero w kolejnych krokach
po kawałku zamieniać go na właściwą implementację.
METODA
Metoda to blok kodu, który działa tylko wtedy, gdy dana metoda zostanie wywoływana
i służy do wykonywania określonych czynności (fragmentu logiki). Kod w ramach metody
wykonywany jest linijka po linijce od góry do dołu – Jeżeli jednak Java napotka
wywołanie innej metody, to będzie musiała ją też wywołać.
Możemy wyróżnić dwa typy metod:
Metody zdefiniowane przez użytkownika – czyli nas :)
Metody biblioteki standardowej lub innych zależności
(metody przygotowane przez innych deweloperów)
NAZWA
TYP ZWRACANY Identyfikator używany do
Określa typ wartości odwoływania się do określonej PARAMETRY
zwracanej przez metodę metody w programie
(typy proste, typy Lista przyjmowanych
obiektowe, void – jeżeli argumentów wraz z ich typami
nic nie zwracamy)
CIAŁO
Logika metody
RETURN
Jeżeli metoda nie jest
WYWOŁANIE METODY
oznaczona jako void
KONSTRUKTOR
Specjalny typ metody wywoływanej podczas tworzenia nowego obiektu
i wykorzystywany do inicjowania np. atrybutów.
CECHY KONSTRUKTORA
Konstruktor cechuje:
Operator new wywołuje konstruktor
Brak zwracanego typu
Nazwa konstruktora musi zgadzać się z nazwą klasy
Kompilator w przypadku braku jawnego konstruktora dla wygody programistów spróbuje
dodać konstruktor domyślny (bezargumentowy)
KONSTRUKTOR C.D.
PRZECIĄŻENIE
KONSTRUKTORA
Możliwość stworzenia w klasie,
większej ilości konstruktorów niż jeden,
jeżeli posiadają inny zestaw
argumentów.
ŁAŃCUCH WYWOŁAŃ
KONSTRUKTORÓW
Możliwość wywołania innego konstruktora
z poziomu naszego konstruktora – Musi to
jednak zadziać się jako pierwsza instrukcja
PRZETWARZANIE DANYCH
Działanie praktycznie każdego z programów, ogólnie mówiąc, sprowadza się
do przetwarzania danych. Dlatego jedną z podstawowych umiejętności, jaką powinien
posiąść programista, jest znajomość typów danych oraz możliwości ich obróbki.
TYPY DANYCH
TYP ZMIENNYCH
Raz nadany typ dla zmiennej nie może zostać już zmieniony,
czyli jeżeli zadeklarujemy zmienną jako typ int (liczba
całkowita), to nigdy nie będzie można w niej już przechować,
np. tablicy, czy ciągu znaków. Wartość zmiennej,
w przeciwieństwie do jej typu, jak sama nazwa wskazuje,
może zmieniać się w czasie.
Jeżeli zmienna (lokalna) zostanie zadeklarowana,
ale nie będzie jeszcze zainicjowana, czyli nie będzie
podana jej wartość, i spróbujemy z niej skorzystać,
np. próbując wyświetlić jej wartość, to otrzymamy błąd
kompilacji.
STAŁE
W Javie stałe deklaruje się bardzo podobnie do zmiennych, z tą różnicą, że przed
deklarowanym typem trzeba dodać jeszcze słowo kluczowe: final.
Zadeklarowanej w ten sposób stałej można przypisać wartość tylko raz. Późniejsze próby
jej modyfikacji zakończą się błędem kompilacji. W Javie stałe są wykorzystywane dość
powszechnie, np. w klasach opakowujących (Integer, Long itp.).
KONWENCJA
NAZEWNICTWA PRZYKŁAD
Nie ma takiego wymogu
składniowego, jednak według
konwencji nazewnictwa w Javie
w przypadku stałych powinno
stosować się SCREAMING SNAKE
CASE tzn. nazwa powinna być
wielkimi literami i cyframi, a kolejne
słowa powinny być oddzielone
znakiem podkreślenia.
TYPY W JAVIE
W Javie typy danych możemy podzielić na dwie główne kategorie:
typy proste oraz typy obiektowe.
TYPY PROSTE
Typy proste, inaczej mówiąc prymitywne, przechowują tylko „surowe” dane, takie jak:
liczby całkowite, np. 1, 10, 200;
liczby zmiennoprzecinkowe, np. 1.0, 10.5, 200.1;
znaki, np. ’a', 'z', '1';
typ logiczny – czyli prawdę (true) lub fałsz (false);
https://stormit.pl/typy-proste/
LICZBY LICZBY
ZMIENNOPRZECINKOWE ZMIENNOPRZECINKOWE
Liczby zmiennoprzecinkowe, czyli – ZAOKRĄGLENIA
takie, w których możemy
przechować np. ułamki, zostały Taki rodzaj przechowywania zmiennych
dodatkowo podzielone na dwa niesie ze sobą pewne ograniczenia,
typy: a właściwie zaokrąglenia np.
float – 4 bajty, przechowując wynik dzielenia 1 przez 3,
double – 8 bajtów. dostajemy ułamek nieskończony 0.(3),
który w przypadku typu float zostanie
W liczbach zmiennoprzecinkowych zaokrąglony do 0.33333334.
część całkowita od ułamkowej
oddzielona jest kropką. Jeżeli nie możemy pozwolić sobie na takie
zaokrąglenia, należy skorzystać np. z klasy
pomocniczej BigDecimal do
przechowywania zmiennych, która między
innymi pozwala, na precyzyjne określenie,
jak ma zachowywać się wynik obliczeń
w przypadku zaokrągleń.
W pamięci komputera nie jest przechowywany tak naprawdę sam znak, np. litera 'a',
a jego kod, w tym wypadku będzie to: liczba 97.
Dlatego jest to specyficzny typ liczbowy, przechowujący nieujemne całkowite liczby
z zakresu: od 0 do 65535.
TYP LOGICZNY
PRZYKŁAD
BOOLEAN
Typ logiczny boolean przeznaczony jest
do przechowywania tylko dwóch
wartości:
true – prawa
false – fałsz
ALGORYTMY I STRUKTURY DANYCH
https://stormit.pl/tablice/
LISTY (LIST)
Lista, podobnie jak tablica, przeznaczona
jest do przechowywania większej ilości
danych. Z tym wyjątkiem, że lista umożliwia
łatwe dodawanie nowych elementów.
Listę można postrzegać jako łańcuszek
połączonych ze sobą danych.
LISTY (LIST) C.D.
Istnieją dwie popularne realizacje struktury listy: tablicowa oraz wskaźnikowa.
UWAGA
W zależności od ilości wskaźników oraz
STOS (STACK) – LIFO sposobu ich wykorzystania w liście możemy
Stos nazywany jest również kolejką wyróżnić kilka szczególnych przypadków jej
LIFO, czyli „ostatni na wejściu, implementacji:
Lista jednokierunkowa
pierwszy na wyjściu” (z ang. Last In,
Lista dwukierunkowa
First Out).
Lista cykliczna
Bardzo dobrze sprawdza się, gdy
chcemy przeprowadzać operacje
najpierw na najnowszych danych,
a dopiero później – na starszych. KOLEJKA (QUEUE) – FIFO
Podstawowe operacje na stosie to: Przeciwieństwem stosu LIFO jest kolejka typu FIFO
push (obiekt) – dodanie obiektu (ang. First In, First Out), czyli „pierwszy na wejściu,
na wierzch stosu; pierwszy na wyjściu”. W tym przypadku
pop () – ściągnięcie jednego zaczynamy przetwarzanie danych od
elementów, które pojawiły się jako pierwsze. Jest
elementu ze stosu i zwrócenie
to odpowiednik zwykłej kolejki w sklepie.
jego wartości.
Szczególną odmianą tej struktury danych jest
https://stormit.pl/stos-lifo/ kolejka priorytetowa. W tej implementacji
konkretne rekordy dodatkowo posiadają
przypisany priorytet, który wpływa na kolejność
późniejszego pobierania elementów z listy.
https://stormit.pl/kolejka-fifo/
ZBIÓR (SET)
Zbiór to kolekcja elementów, która nie może
zawierać duplikatów. W Javie najczęściej
wykorzystywane są dwie implementacje:
HashSet oraz TreeSet.
Główna różnica między tymi dwiema
implementacjami polega na tym, że TreeSet
wyznacza kolejność elementów (domyślnie
jest ona rosnąca), a HashSet – nie.
W szczególnych przypadkach może się
jednak zdarzyć, że HashSet również posortuje
elementy rosnąco, jednak implementacja
tego nie gwarantuje.
DYNAMICZNE
STRUKTURY DANYCH
Dynamiczne struktury danych
w przeciwieństwie do statystycznych (takich
jak np. rekord) pozwalają na zmianę ich
struktury już podczas działania algorytmu.
MAPA (MAP)
Mapa to specyficzna kolekcja, która przechowuje pary danych składające się z klucza
oraz przypisanej wartości.
Klucz w obrębie mapy musi być unikatowy, natomiast wartości mogą się powtarzać.
OPERATORY OPERATORY OPERATORY
RELACYJNE Dostępne różnego rodzaju ARYTMETYCZNE
Wynik zawsze boolean operatory pozwalają na
Wynik wyrażenia zależny jest
(true lub false) manipulację wartością
od wykorzystywanych typów
zmiennych.
Dodawanie
Równy
int result = v1 + v2;
boolean result = v1 == v2;
Odejmowanie
Nie równy OPERATORY int result = v1 - v2;
boolean result = v1 != v2;
Większy niż
RELACYJNE Mnożenie
int result = v1 * v2;
I
boolean result = v1 > v2; Dzielenie
boolean result = v1 && v2;
Mniejszy niż int result = v1 / v2;
Lub Modulo
boolean result = v1 < v2; boolean result = v1 || v2; int result = v1 % v2;
Większy niż lub równy Nie
https://stormit.pl/operatory-
boolean result = v1 >= v2; boolean result = !v1; matematyczne/
Mniejszy niż lub równy
boolean result = v1 <= v2;
PĘTLE
Pętle są jednym z podstawowych narzędzi wykorzystywanych przez programistę.
Dzięki nim można wywołać określoną funkcjonalność podaną ilość razy, zamiast za każdym razem
wywoływać ją ręcznie np. zamiast wypisywać kolejno dni tygodnia w 7 instrukcjach, możemy
wykorzystać do tego pętlę. W Javie mamy do dyspozycji kilka rodzajów pętli: while, do while, for
i foreach. Funkcjonalność wszystkich jest wymienna, a decyzja, którą należy użyć w danym momencie,
zależy głównie od kontekstu, w jakim ma być wykorzystana oraz od preferencji programisty.
https://stormit.pl/petle/
PĘTLE C.D.
WHILE PRZYKŁAD
Pętla while najczęściej jest wykorzystywana, gdy nie
możemy określić konkretnej ilości powtórzeń do
wykonania. Znamy jednak warunki określające, jak
długo dana sytuacja będzie zachodziła. Przykładowo:
„dopóki licznik nie przekroczy zakresu tablicy, wypisz
jej kolejny element”. Pętla jest wykonywana tak długo,
póki warunek jest spełniony. Jeżeli warunek od
początku nie będzie spełniony, taka pętla nie zostanie
wywołana ani razu.
DO WHILE
NIESKOŃCZONA Pętla do while jest to modyfikacja pętli
PĘTLA while.
Warunek kończący pętlę jest
Głowna różnica polega na tym, że ciało
bardzo istotny – błędy w postaci pętli zostanie wykonane przynajmniej raz,
warunku, który nigdy nie nawet jeżeli warunek zawsze jest
zakończy pętli, mogą niespełniony. Najpierw wykonywane są
spowodować poważne instrukcje zdefiniowane wewnątrz pętli,
konsekwencje tj. zawieszenie a dopiero potem sprawdzany jest jej
programu (program nie będzie warunek.
mógł przejść dalej).
FOR
Pętla for zazwyczaj wykorzystywana jest,
gdy z góry znamy ilość wykonania kolejnych
iteracji pętli.
INSTRUKCJE WARUNKOWE
IF ELSE IF
Instrukcje warunkowe IF ELSE to konstrukcja języka, dzięki Instrukcja if to podstawowa
której można rozwidlić ścieżkę wykonywania programu. i najprostsza instrukcja warunkowa.
Przy jej pomocy możemy określić warunki, jakie mają zajść, Jej działanie polega na wykonaniu
żeby dany fragment kodu został wykonany. kodu z jej ciała, jeżeli warunek został
W wolnym tłumaczeniu można przeczytać ją jako: spełniony lub ich pominięciu w
jeżeli zajdzie pewien warunek, to zrób 'to', w przeciwnym przeciwnym wypadku.
wypadku zrób 'tamto'. https://stormit.pl/if-else/
ELSE
Rozwinięciem podstawowej
instrukcji if jest instrukcja if else.
Dzięki niej można określić
szereg opcjonalnych warunków
oraz określić ,co się wtedy ma
wydarzyć.
WARIANTY CASE
W instrukcji Switch, w przeciwieństwie do If Else, nie
określamy warunków, które muszą być spełnione, aby
dany kod został wykonany. W przypadku tej instrukcji
określamy wyrażenie wejściowe oraz warianty kodu, które
mają być wykonane w zależności od jego wartości.
Poszczególne warianty oznaczamy słowem kluczowym
case, po którym następuje wartość obsługiwanego BREAK
argumentu wejściowego i fragment przypisanego kodu do
Poszczególne warianty case nie muszą
wykonania.
być całkowicie niezależnymi
fragmentami kodu i wcale nie muszą się
wykluczać. Powinny być raczej rozumiane
DEFAULT jako początkowe punkty wejścia do
Instrukcja Switch daje również możliwość określenia instrukcji switch.
opcjonalnego wariantu domyślnego, który zostanie Jeżeli aplikacja wejdzie do jakiegoś
wywołany, jeżeli argument wejściowy nie zostanie warunku case, to będzie wykonywała
dopasowany do żadnego warunku case. kaskadowo wszystkie kolejne bloki kodu.
Wariant domyślny określamy słowem kluczowym default. Wykonywanie kolejnych bloków kończy
Zazwyczaj taki warunek umieszcza się na samym końcu się dopiero instrukcją break lub końcem
instrukcji switch, jednak nie jest to konieczne. całej instrukcji switch.
SWITCH VS IF ELSE
Nie ma jasno zdefiniowanych reguł o tym
decydujących. Te dwie instrukcje są praktycznie
wymienne i to czytelność kodu powinna
zadecydować, z której z nich w danym momencie
skorzystać. Zazwyczaj dla prostych porównań lepiej
sprawdza się instrukcja if, a dla bardziej
rozbudowanych switch. Switch bardzo dobrze
sprawdza się też w przypadku zmiennych typu enum.
MODYFIKATORY DOSTĘPU
Służą do ustawiania poziomu dostępu do klas, zmiennych, metod i konstruktorów.
Prywatny (ang. private) – element dostępny tylko z poziomu tej samej klasy.
Publiczny (ang. public) – wszystkie inne klasy we wszystkich pakietach będą mogły
korzystać z takiego elementu – najmniej restrykcyjny modyfikator dostępu.
Domyślny (ang. default) – package private – element jest dostępny tylko dla klas z
tego samego pakietu.
Chroniony (ang. protected) – możemy uzyskać dostęp do tego elementu z tego
samego pakietu (jak w przypadku modyfikatora domyślnego) oraz dodatkowo ze
wszystkich podklas, nawet jeśli znajdują się one w innych pakietach.
KONWERSJA TYPÓW
TESTOWANIE
Testowanie oprogramowania pozwala ocenić jego jakość i zmniejszyć ryzyko
wystąpienia awarii.
W podstawowej wersji polega na uruchomieniu naszej aplikacji lub jej fragmentu
i sprawdzeniu uzyskanych rezultatów.
https://stormit.pl/testowanie-oprogramowania/
TESTOWANIE – KORZYŚCI
Co dają nam testy?
Pomagają poprawić stabilność i jakość naszego rozwiązania
Pozwalają również bezpieczniej wprowadzać zmiany w naszym kodzie
Wymuszają myślenie o tym, jak kod będzie wykorzystywany
Większa przewidywalność
Pozwalają w łatwy sposób uczyć się nowych technologii i bibliotek
Umożliwiają zweryfikować założenia oraz uniknięcia pomyłek swoich i innych
TESTOWANIE C.D.
PROGRAMOWANIE OBIEKTOWE
PROGRAMOWANIE
PROGRAMOWANIE
OBIEKTOWE
OBIEKTOWE
(ANG. OBJECT ORIENTED
– PARADYGMATY
PROGRAMMING)
Popularny paradygmat programowania,
(ZASADY)
w którym modelujemy istniejącą rzeczywistość
za pomocą obiektów, zamiast stosować tylko
funkcje i logikę. Projektowanie obiektowe Główne paradygmaty
polega na umiejętności przedstawienia programowania obiektowego:
sytuacji z życia codziennego pod postacią Abstrakcja
obiektów i relacji między nimi. Enkapsulacja
Obiekty to elementy łączące stan – czyli Dziedziczenie
przechowywane dane, nazywane często Polimorfizm
polami oraz zachowanie – czyli
procedury/metody.
Ogromną zaletą programowania obiektowego
jest jego zgodność ze światem rzeczywistym.
https://stormit.pl/programowanie-obiektowe/
PROGRAMOWANIE OBIEKTOWE C.D.
DZIEDZICZENIE
Java pozwala na dziedziczenie metod oraz atrybutów z jednej klasy do drugiej
np. Samochód dziedziczy po Pojazd.
Podklasa / klasa pochodna (dziecko) – klasa, która dziedziczy od innej
Nadklasa / klasa bazowa / superklasa (rodzic) – klasa po której dziedziczymy
NADKLASA
ZALETY
Przejmujemy dane i zachowanie klasy
bazowej
Możliwość powtórnego wykorzystania
kodu
Lepsze odzwierciedlenie rzeczywistości
DZIEDZICZENIE METOD
Musi być zgodny kontrakt: Ta sama
nazwa oraz zwracany typ (akceptowany
jest również zgodny podtyp)
Opcjonalnie można użyć adnotacji
@Override (Pomaga to w czytelności
kodu, jednak nie jest niezbędne) PODKLASA
POLIMORFIZM
Zdolność do przyjmowania wielu form.
Mechanizm ten umożliwia wykonywanie
różnych operacji na różnych obiektach
przy użyciu tego samego kodu. Jest bardzo
mocno związany z dziedziczeniem, klasami
abstrakcyjnymi oraz interfejsami.
Polimorfizm pomaga w ponownym
wykorzystaniu kodu.
POLIMORFIZM W CZASIE
WYKONYWANIA
Polimorfizm dynamiczny uzyskiwany poprzez
nadpisywanie metod (ang. Method Overriding)
Kiedy np. W 2 klasach, w których mamy
analogiczną metodę o takiej samej nazwie ENKAPSULACJA
i o takim samym zestawie parametrów.
Mechanizm polegający
To kontekst, czyli obiekt decyduje o tym, która z
na ukrywaniu szczegółów
metod zostanie wywołana. implementacyjnych klasy lub
obiektu za pomocą abstrakcji.
Pozwala to na zapewnienie
HERMETYZACJA integralności danych
Hermetyzacja polega na ukryciu informacji (szczegółów przechowywanych przez
implementacji), które nie powinny być widoczne poza klasą lub obiekt poprzez wiązania
modułem. Celem jest ograniczanie bezpośredniego dostępu do danych, wspólnie z metodami
poszczególnych komponentów naszej implementacji, czyli między operującymi na tych danych,
innymi na ukrywaniu metod i atrybutów dla klas zewnętrznych. w jedną całość.
Hermetyzacja może być używana do ukrywania zarówno członków Enkapsulacja umożliwia
danych, jak i metod związanych z instancją klasy lub obiektu. również łatwą zmianę
implementacji obiektu bez
konieczności modyfikacji kodu,
który z nim współpracuje.
Aby osiągnąć hermetyzację, należy: Przykładem jest klasa,
Zadeklarować zmienne lub metody klasy jako prywatne ponieważ składa się z danych
i metod, które zostały
Zapewnić publiczne metody get i set, aby uzyskać dostęp
połączone w jedną całość.
i aktualizować wartość prywatnej zmiennej
WRAPPERY
Klasy opakowujące typy proste w typy obiektowe – pozwalają by nasz typ prosty,
zachowywał się przynajmniej częściowo jak typ obiektowy, np. Integer dla typu int.
KLASA OBJECT
TYPY GENERYCZNE
TYPY GENERYCZNE
Mechanizm, który umożliwia tworzenie klas, metod
lub funkcji, które mogą pracować z różnymi typami
danych. Pozwalają na napisanie uniwersalnych
struktur danych: klas, interfejsów, a także metod,
które mogą być używane z różnymi typami danych
bez konieczności tworzenia wielu wersji dla
każdego z możliwych typów.
SAMODZIELNA
DEKLARACJA
Typ generyczny definiujemy
poprzez podanie parametrów
w nawiasach kątowych.
Parametry te używa się w ciele
klasy, interfejsu bądź metody
w miejscu, gdzie używalibyśmy
określonych „normalnych” typów.
STRINGBUFFER STRINGBUFFER STRINGBUILDER
& STRINGBUILDER
MUTOWALNOŚĆ
Klasy służąca do reprezentowania
ciągów znaków. Różnią się od klasy MECHANIZMY
String tym, że są mutowalne – można SYNCHRONIZACJI
dokonywać zmian na obiektach tej klasy
bez konieczności tworzenia nowych THREAD-SAFE
obiektów. Klasy te posiadają wiele
metod, które umożliwiają
manipulowanie ciągiem znaków, takich
jak dodawanie lub usuwanie znaków,
WYJĄTKI (ANG. EXCEPTIONS)
zamienianie zawartości na inną, itp. Sposób na zarządzanie błędami lub sytuacjami
StringBuffer i StringBuilder mogą być wyjątkowymi (nieoczekiwanymi) , które mogą wystąpić
wydajniejsze niż String, jeśli chodzi w trakcie działania programu.
o operacje modyfikujące zawartość Są one zazwyczaj rzucane przez metody i klasy, gdy
ciągu znaków, ponieważ nie tworzy występuje sytuacja, która jest poza zakresem
nowych obiektów podczas takich normalnego działania danej struktury. Podczas
operacji. zgłoszenia wyjątku przez program
https://stormit.pl/stringbuilder/ normalny przepływ aplikacji jest przerywany. Wyjątki
mogą zostać przechwycone i obsłużone przez
odpowiedni kod, jeżeli nie zostaną, normalny przepływ
aplikacji zostaje zakłócony,
i zakończy on nieprawidłowo swoje działanie.
Wyjątki są obiektami klasy java.lang.Exception
lub jej podklas.
RODZAJE WYJĄTKÓW
PRZYKŁAD
Czasu kompilacji, oznaczonym (ang. checked exceptions)
Wyjątki dziedziczące po Exception, ale nie dziedziczące po
RuntimeException np. IOException.
Są sprawdzane przez kompilator podczas kompilacji – muszą
zostać obsłużone za pomocą bloku try-catch,
albo za pomocą słowa kluczowego throws.
Czasu wykonania, nieoznaczone
(ang. unchecked exceptions)
Występują podczas wykonywania programu np.
java.lang.NullPointerException
Możliwe jest zapewnienie obsługi wyjątków niekontrolowanych,
jednak nie jest to konieczne z punktu widzenia kompilatora.
CLEAN CODE
Kod, który jest łatwy do zrozumienia i utrzymania. Jest on zazwyczaj czytelny, zwięzły i dobrze
zorganizowany. Powstały różne zasady i wytyczne, które pomagają tworzyć czysty kod np.
stosowanie dobrych praktyk programistycznych, takich jak unikanie duplikacji kodu, stosowanie
odpowiednich komentarzy i zachowanie zasad związanych z formatowaniem kodu. Clean code
pozwala na szybkie zrozumienie kodu i łatwe jego modyfikowanie lub rozszerzanie w przyszłości.
W rezultacie może przyczynić się do zwiększenia wydajności i jakości tworzonego oprogramowania
DEBUGGING GIT
Proces systematycznej redukcji liczby Popularny systemem kontroli wersji, który umożliwia
błędów w oprogramowaniu. Istnieje wiele zarządzanie zmianami w kodzie źródłowym. Pozwala
różnych narzędzi i technik, które można on na tworzenie wielu wersji kodu (tzw. gałęzi),
a także łatwe przechodzenie między nimi i łączenie
wykorzystać do debugowania kodu np.
zmian w jedną całość. Dzięki temu możliwe jest
IntelliJ, które umożliwiają debugowanie
tworzenie wspólnych projektów przez wielu
kodu w czasie rzeczywistym. Dzięki takim programistów, a także łatwe rozwiązywanie
narzędziom można śledzić wykonanie kodu problemów i konfliktów w kodzie. Git jest szczególnie
linijka po linijce, ustawiać punkty przydatny w sytuacjach, gdy kod jest często
przerwania, a także przeglądać zawartość zmieniany i aktualizowany, a także gdy wiele osób
zmiennych i stosu wywołań. pracuje nad tym samym projektem. Jest on też
Reprodukcja błędu → Wyizolowanie źródła często wykorzystywany w połączeniu z serwisami
błędu → →
Identyfikacja przyczyny awarii hostingowymi, takimi jak GitHub, gdzie można
Usunięcie defektu → Weryfikacja przechowywać i udostępniać kody źródłowe
wspólnie z innymi osobami → https://github.com/
powodzenia naprawy
https://stormit.pl/debugowanie/ https://stormit.pl/git/
CODE REVIEW
Proces, w trakcie którego kod źródłowy jest sprawdzany przez inne osoby zespołu, zazwyczaj
przed jego wdrożeniem do produkcji. Celem code review jest zapewnienie jak najwyższej jakości
kodu, poprzez wykrycie i usunięcie ewentualnych błędów, a także poprawę jego struktury
i czytelności. Code review może być przeprowadzane na wiele różnych sposobów, ale najczęściej
wykorzystuje się do tego specjalne narzędzia np. GitHub, które umożliwiają przeglądanie kodu
i dodawanie komentarzy przez wielu użytkowników. Code review jest szczególnie przydatne w
dużych zespołach programistów, gdzie wspólna praca nad kodem może prowadzić do
powstawania różnych błędów i niejasności.
https://stormit.pl/code-review/
ŚWIAT STORMIT
CZUJESZ, KIERUNEK
STORMIT BLOG
ŻE CHCESZ
Poznaj tematy zarówno z zakresu JAVA
Javy jak i programowania JESZCZE WIĘCEJ?
– wiele ciekawych artykułów czeka Przejdź transformację
Pragniesz jeszcze od „ZERA”
na Ciebie :)
bardziej zagłębić się do komercyjnego
https://stormit.pl/
w świat Javy i programowania
programowania ? w Java. Tu poznasz
EBOOK 8 RZECZY Zajrzyj do moich wszystkie tajniki Javy,
programów i podążaj które pozwolą Ci
Dowiedz się, jakie 8 dalej w kierunku stworzyć pierwszą
niezbędnych umiejętności, pierwszej pracy jako aplikację Javową.
pomoże Ci dostać pierwszą programista oraz stań
pracę jako Junior Java się jeszcze lepszym
https://kierunekjava.pl/
Developer. programistą!
https://kierunekjava.pl/zacznij/