0% found this document useful (0 votes)
19 views24 pages

KierunekJavaPL JavaCheatSheet

Uploaded by

plikwiktorianski
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views24 pages

KierunekJavaPL JavaCheatSheet

Uploaded by

plikwiktorianski
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

JAVA CHEAT SHEET

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.

Język ten został zaprojektowany i zaimplementowany w laboratoriach Sun Microsystems


(w 2010 r. Sun został przejęty przez Oracle) w Mountain View (Kalifornia) pod
kierownictwem Jamesa Goslinga. James Gosling jest również autorem programu emacs
pod UNIX oraz systemu okien NeWS.

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/

ŚRODOWISKA IDE SERWERY APLIKACJI


GlassFish
NetBeans
WildFly/JBoss
Eclipse
WebLogic
IntelliJ IDEA
WebSphere
JDeveloper
Tomcat
https://stormit.pl/ide/ TomEE

FRAMEWORKI NARZĘDZIA DO BUDOWANIA


Spring PROJEKTÓW
Struts
TM
Vaadin Maven
Tapestry Ant
Hibernate Gradle
ARCHITEKTURA APLIKACJI JAVA
Kod programu w języku Java pogrupowany jest w klasy, które z kolei pogrupowane
są w pakiety. Klasy mogą składać się z różnych elementów takich jak np. zmienne,
stałe czy metody (nazywane również funkcjami w innych językach programowania).

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

public static void main(String[] args){}

public – modyfikator dostępu, który oznacza, że metoda ta jest dostępna dla


wszystkich klas, a także co najważniejsze dla środowiska uruchomieniowego Javy
(ang. Java runtime),
static – dla metod statycznych nie musimy tworzyć obiektu danej klasy,
aby ją wywołać,
void – typ zwracany przez metodę, w tym wypadku metoda nie zwraca nic
(nie występuje słowo kluczowe return),
main – nazwa metody. Wymagana jest dokładnie taka nazwa,
(String[] args) / (String... args) / (String args[]) – metoda main przyjmuje tylko
jeden parametr, którym jest tablica Stringów lub varargs o typie String. Nazwa
parametru może być inna, jednak przyjęło się i używa się najczęściej nazwy „args”.

KLASA Klasa posiada również ciało


Klasa to zdefiniowany przez użytkownika swego rodzaju zdefiniowane w nawiasach
schemat (prototyp), na podstawie którego tworzone są klamrowych {}, gdzie
obiekty. Przykładowo klasą może być „człowiek”, umieszczamy jej zmienne
a obiektami, czyli instancjami tej klasy może być „Ania”, oraz metody.
„Tomek”, „Magda” itp.

Klasa reprezentuje zestaw właściwości i metod, które są


wspólne dla wszystkich obiektów jednego typu.
Klasę w najprostszej swej postaci tworzy się poprzez
użycie słowa kluczowego class oraz nazwy tej klasy.
OBIEKT CECHY OBIEKTU
Obiekt jest konkretną instancją danej
klasy. Rozpatrując klasę jako szablon, Obiekt posiada takie cechy jak:
można przyjąć, że każdy obiekt danej Stan: reprezentuje dane (wartości) obiektu
klasy jest elementem utworzonym na np. wiek psa, rasa psa itp.
podstawie danego szablonu. Zachowanie: reprezentuje zachowanie
(funkcjonalność) obiektu, takie jak np.
Wszystkie właściwości i metody szczekanie, warczenie.
klasy, są wspólne dla obiektów Adres w pamięci: do którego każdy obiekt
jednego typu. Przykładowo wszystkie jest przypisany tzw. referencja obiektu.
osoby posiadają swoje dane, takie jak
imię, nazwisko, wiek itp. oraz
zachowanie np. wszystkie osoby
mogą chodzić, spać, jeść itp.
https://stormit.pl/typy-obiektowe/

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.

Komentarze są widoczne tylko w kodzie źródłowym i przy kompilacji są pomijane, dlatego


nie mają wpływu na samo działanie wynikowej aplikacji. Jednak jest to integralna część
każdego programu i nie powinna być pomijana. Dzięki nim można lepiej zrozumieć intencje
programisty, co jak w praktyce się okazuje, nie zawsze jest takie oczywiste 🙂
https://stormit.pl/komentarze-java/

TYPY KOMENTARZY
W Javie mamy dwa typy
komentarzy:
Do końca linii
Blokowe – czyli takie, które
mogą zawierać kilka linii

KOMENTARZE – DOBRE PRAKTYKI


Komentarze służą poprawie czytelności kodu. Dlatego nie powinno się dodawać ich na
siłę do każdego fragmentu kodu, a jedynie w miejscach, gdzie czujemy, że przydałoby się
jakieś wyjaśnienie.
KOMENTARZE – DOBRE
PRAKTYKI C.D. PRZYKŁAD
Idąc krok dalej, można powiedzieć, że gdzie
tylko to możliwe komentarze powinny być
zastępowane czytelnym kodem, który nie
wymaga dodatkowego objaśnienia.
Powstaje w ten sposób tak zwany
samodokumentujący się kod.
Przykładowo, dużo lepiej jest nadać metodzie
opisową nazwę niż wyjaśniać w komentarzu, co
programista miał na myśli.

KOMENTARZE – NA CO UWAŻAĆ?

Przy stosowaniu komentarzy blokowych należy Komentarze do końca linii, jeżeli


pamiętać, że nie można ich zagnieżdżać, tzn. jeżeli zostaną wstawione w niewłaściwym
spróbujemy wstawić jeden komentarz w drugim, miejscu, również mogą powodować
kłopoty np. jeżeli zostaną wstawione
to kompilator potraktuje koniec drugiego
między instrukcją if a rozpoczynającą
komentarza, jako koniec całego bloku, klamrą to po zmianie formatowania
a pozostały fragment spowoduje błąd. kodu może dojść do
zakomentowania tej klamry
i błędów kompilacji.

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

W każdym programie dane możemy przedstawić za pomocą literałów, zmiennych oraz


stałych.
literał – to napis w programie bezpośrednio przedstawiający wartość danej, np.
liczba: 123 albo ciąg znaków: Hello World.
zmienna – jest to natomiast symbol oznaczający wielkość, która może przyjmować
różne wartości. Natomiast zbiór możliwych wartości jest to zakres tej zmiennej.
Mówiąc bardziej technicznie: to, że zmienna jest symbolem oznacza, że jest swego
rodzaju wskaźnikiem kierującym na obszar w pamięci komputera, w którym są
zapisane różne dane, np. liczba.
stała – jest również symbolem oznaczającym pewną wielkość, jednak, w
przeciwieństwie do zmiennej, nie może zmieniać swojej wartości podczas działania
programu.
TYPY DANYCH C.D.

ZMIENNE DEKLARACJA ZMIENNYCH


W celu utworzenia zmiennej musimy ją najpierw zadeklarować,
Java jest językiem silnie
czyli podać jej typ, nadać jej nazwę oraz, opcjonalnie,
typowanym, czyli każda
zainicjować ją, czyli przypisać jej wartość.
zmienna musi być
określonego typu.
[typ zmiennej] nazwaZmiennej = wartość;
Poszczególne typy danych
[typ zmiennej] nazwaZmiennej;
zostaną omówione za
chwilę, tymczasem w nazwaZmiennej = wartość;
przykładzie posłużymy się nazwaZmiennej = nowaWartość;
typem dla liczb
całkowitych: int. Zmienną można jednocześnie zadeklarować i zainicjować w
https://stormit.pl/zmienne/
jednej linii, ale można to również rozbić na dwa kroki.

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.).

Dobrym zwyczajem jest przechowywanie różnego rodzaju niezmiennych wartości właśnie


jako stałych, dzięki czemu unikniemy ich przypadkowej modyfikacji oraz, jeżeli zaszłaby
potrzeba zmiany tej wartości w całym systemie, możemy to zrobić, modyfikując kod tylko
w jednym miejscu.
https://stormit.pl/stale/
STAŁE C.D.

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.

long maxValue = Long.MAX_VALUE;


long minValue = Long.MIN_VALUE;

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 CAŁKOWITE LICZBY CAŁKOWITE


Liczby całkowite, czyli stałoprzecinkowe, – WYBÓR TYPU
dodatkowo podzielone są na 4 rodzaje ze względu
na rozmiar liczby, jaki mogą przechowywać: W dzisiejszych czasach programista
byte – 1 bajt – zakres od -128 do 127; zazwyczaj ma do dyspozycji bardzo
short – 2 bajty – zakres od -32 768 do 32 767; dużo taniej pamięci, dlatego głównie
int – 4 bajty wykorzystywany jest uniwersalny typ:
– zakres od -2 147 483 648 do 2 147 483 647; int nawet do przechowania
long – 8 bajtów – zakres od -2⁶³ do 2⁶³-1; stosunkowo niewielkich liczb.

LICZBY CAŁKOWITE – NA CO TRZEBA UWAŻAĆ?


W Javie, w przeciwieństwie np. do C/C++, nie ma osobnego typu dla liczb bez znaku
(Unsigned), dlatego trzeba szczególnie uważać, żeby nie przekroczyć zakresu danych
zmiennej, bo możemy otrzymać np. liczbę ujemną.
TYPY PROSTE C.D.

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ń.

TYP ZNAKOWY CHAR


Java udostępnia również typ znakowy: char, który wykorzystywany jest do
przechowywania kodu znaku z systemu kodowania Unicode, pozwalającego na
przedstawienie znaków niemal ze wszystkich języków.

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

CO TO JEST ALGORYTM? STRUKTURY DANYCH


Algorytm możemy rozumieć jako Strukturę danych można postrzegać jako
jednoznaczny przepis postępowania, swego rodzaju pojemnik na dane, który
gdzie zamieniamy jakieś informacje gromadzi informacje i układa je w
wejściowe na oczekiwany wynik. odpowiedni sposób.

REKORD – STATYCZNA STRUKTURA DANYCH


Rekord jest jedną z prostszych struktur danych, która świetnie nadaje się do
prezentowania informacji o jednym obiekcie. Ponieważ w trakcie działania algorytmu
nie zmienia on swego rozmiaru ani struktury, mówimy, że jest to statyczna struktura
danych. Rekord bardzo dobrze sprawdza się, gdy chcemy przechować dane na temat
tylko jednego obiektu.

TABLICE (ARRAY) PRZYKŁAD


Tablice bardzo dobrze sprawdzają się w
sytuacji, gdy mamy pewien zbiór danych tego
samego typu, który nie będzie modyfikowany
podczas działania algorytmu. Rozmiar tego
typu struktur musimy jednak określić już na
samym początku, podczas podawania
wstępnych parametrów.
Inną charakterystyczną cechą tablicy, poza jej W Javie możemy w tym celu
stałym rozmiarem, jest umiejscowienie wykorzystać klasę:
kolejnych jej elementów obok siebie w pamięci,
dzięki czemu mamy możliwość prostego
i szybkiego dostępu do nich przy pomocy
indeksów.

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.

LISTA TABLICOWA LISTA WSKAŹNIKOWA –


– ARRAYLIST LINKEDLIST
Do implementacji tej listy została Implementacja wskaźnikowa wymusza dodanie
wykorzystana tablica. Jest to tak do każdego elementu listy nowej wartości: wskaźnika,
naprawdę zwykła tablica wyposażona czyli referencji, dzięki czemu zrealizowana jest lokalna
w dodatkowe funkcje, które ukrywają nawigacja w liście. W przeciwieństwie
złożoną logikę. Największą zaletę listy do tablicy logiczna kolejność elementów w liście
tablicowej stanowi jej prosta nawigacja wskaźnikowej może być inna niż jej fizyczne ułożenie
z wykorzystaniem indeksu. w pamięci.

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.

Przykłady struktur dynamicznych


to np. stos, kolejka, lista jedno
i dwukierunkowa, drzewo itp.

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;

https://stormit.pl/operatory- OPERATORY PRZYPISANIA


relacyjne/
Operator przypisania to „równa się” =
Operator ten przypisuje zmiennej po lewej stronie wartość
wyrażenia po prawej stronie.
ZŁOŻONE Operator jednocześnie:
powoduje przypisanie,
OPERATORY zwraca wartość równą przypisanej wartości.
PRZYPISANIA 1. Jeżeli zmienna jest typu prostego, to jej wartość jest
zwyczajnie kopiowana.
Służą one przede 2. Jeżeli zmienna jest typu obiektowego, czyli jest referencją, to
wszystkim skróceniu kopiowana jest sama referencja, a nie obiekt, na który
zapisu. Wszystkie wskazuje.
operacje można zapisać 3. Zmienne typu obiektowego dodatkowo potrafią
przechowywać wartość pustą, czyli null.
bez ich wykorzystania,
posługując się jedynie
zwykłym operatorem int x = 6;
przypisania oraz x = 5;
operatorami int result = x;
arytmetycznymi String str = "Hello, World!";
np. x += y to x = x + y.
https://stormit.pl/operator-przypisania/

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.

for([inicjalizacja]; [warunek]; [modyfikacja]){


[ciało pętli - instrukcje do wykonania] } PRZYKŁAD
Wszystkie cztery elementy pętli są
opcjonalne, jednak dla wygody i czytelności
kodu warto z nich korzystać.
1. inicjalizacja – służy do zainicjowania
zmiennych początkowymi wartościami,
np. utworzenie i zainicjowanie licznika;
2. warunek – w warunku należy sprawdzić,
czy ciało pętli ma być wykonane;
3. modyfikacja – ten element pętli jest
wykonywany po ciele funkcji, można tu
np. zmodyfikować licznik pętli;
4. ciało pętli – czyli wszystkie instrukcje,
które chcemy, żeby były wykonane
określoną ilość razy;
FOR EACH
Pętla for each jest modyfikacją pętli for. Za jej
pomocą w bardzo prosty i czytelny sposób można
przeglądać wszystkie elementy różnych zbiorów, np.
tablic.
Pętlę można przeczytać jako: „dla każdego elementu
tablicy zrób coś…”.

CONTINUE & BREAK


Korzystając z pętli, czasami zachodzi potrzeba ominięcia wykonywania danej iteracji lub
przerwanie całej pętli. W takim przypadku z pomocą przychodzą nam dwie instrukcje:
continue – kończy wykonywanie aktualnej iteracji pętli. Jeżeli warunek w pętli będzie dalej
spełniony, aplikacja przejdzie do wykonywania dalszych iteracji.
break – po wykonaniu instrukcji break kończone jest wykonywanie aktualnej iteracji oraz całej
pętli. Niezależnie od wartości warunku pętli kolejna iteracja nie będzie już wykonana
– warunek pętli nie będzie w tym wypadku już nawet sprawdzany.

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ć.

ELSE IF SWITCH CASE


To instrukcja wielokrotnego wyboru, dzięki której można
Kolejne warunki w instrukcji if else są warunkowo wykonać pewne fragmenty kodu. Jest to
sprawdzane po kolei aż do momentu, gdy swego rodzaju rozszerzenie instrukcji IF ELSE. Jednak
któryś z nich nie zwróci prawdy (true). od pierwowzoru różni się przede wszystkim typem
Wykonywany jest wtedy przypisany mu przyjmowanych argumentów wejściowych, możliwością
fragment kodu. wykonania kilku bloków kodu i samą czytelnością zapisu,
Pozostałe warunki, nawet jeżeli byłyby ale o tym wszystkim za chwilę.
prawdziwe, nie będą nawet sprawdzane. https://stormit.pl/switch-case/
SWITCH CASE C.D.
Switch nie jest typową instrukcją warunkową, a raczej swego rodzaju przełącznikiem.
Przy jego pomocy można „przełączyć” wykonywanie kodu aplikacji na różne tory
w zależności od zaistniałej sytuacji.

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

ZAWĘŻENIE KONWERSJA POSZERZANIE


Poszerzanie (ang. widening)
TYPÓW odbywa się za pomocą
Zawężanie (ang. narrowing)
odbywa się za pomocą Zmiana jednego typu konwersji typu –
rzutowania typu prymitywnego w inny, automatycznego
– wymuszona jawnie poprzez: przekształcenia jednego typu
konwersja. Korzystaj z niej poszerzanie w drugi może nastąpić –
w momencie kiedy: zawężanie tylko z typu węższego, do
chcesz przypisać https://stormit.pl/konwersja szerszego, czyli np. z int do
-rzutowanie-typow/ long
wartość większego typu
danych do mniejszego
typu
istnieje szansa na utratę
precyzji wyniku podczas
wykonania wyrażenia,
której nie chcemy
chcemy zamienić
wartość liczbową na
char, lub odwrotnie

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.

ZDROWA PIRAMIDA TESTÓW


MANUALNE
TESTY
(POZIOMY TESTÓW)
ADAPTACYJNE Manualne testy akceptacyjne – ich celem jest
nabranie zaufania do testowanego systemu, jego
TESTY części lub tylko pewnych atrybutów
END-TO- niefunkcjonalnych – np. wydajności aplikacji.
END Testy end-to-end/systemowe – symulują
zachowanie konkretnego użytkownika
korzystającego z aplikacji.
TESTY
Testy integracyjne – weryfikują, czy kolejne
INTEGRACYJNE komponenty aplikacji odpowiednio ze sobą
współpracują – Testujemy kilka modułów systemu
jednocześnie.
TESTY JEDNOSTKOWE Testy jednostkowe – przeprowadzane są na
bardzo niskim poziomie, testowane są
poszczególne klasy lub nawet same metody
(testują jeden wybrany fragment logiki).
https://stormit.pl/testy-jednostkowe-junit/

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

Można dziedziczyć tylko po jednej klasie – Java nie wspiera wielodziedziczenia


(Wyjątek stanowią metody domyślne w interfejsach).

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

ABSTRAKCJA KLASA ABSTRAKCYJNA


Abstrakcja jest procesem, który Klasa, której nie można utworzyć instancji – Można
dostarcza różne funkcjonalności po niej dziedziczyć i dzięki temu dostarczyć metod
użytkownikowi poprzez zdefiniowanych i/lub abstrakcyjnych. Deklaruję się
ukrywanie przed nimi ją za pomocą słowa kluczowego abstract a można
szczegółów jej implementacji. ją dziedziczyć poprzez użycie extends.
Może, ale nie musi zawierać metody abstrakcyjne
(metody bez ciała) – muszą one zostać zdefiniowane
w klasach potomnych.
Nie może być finalna (tak samo, jak metoda
abstrakcyjna)
Możliwe jest dodanie w klasie abstrakcyjnej
konstruktora bez lub parametryzowanego
– jeżeli go nie utworzysz, klasa zawsze będzie miała
konstruktor domyślny bezparametrowy.
INTERFEJS
„Całkowicie abstrakcyjna klasa", która zawiera deklarację metod, ale nie zawiera ich implementacji.
Do deklaracji interfejsu używa się słowa kluczowego interface, a do implementacji implements.
Klasy, które implementują dany interfejs, muszą zaimplementować wszystkie metody zawarte w nim.
Klasa może implementować wiele interfejsów jednocześnie.
Interfejs gwarantuje, że jakaś metoda istnieje, a nie jak się konkretnie zachowuje.
Na podstawie interfejsów nie można tworzyć nowych obiektów.

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 CZASU KOMPILACJI


Polimorfizm statyczny uzyskiwany poprzez przeciążenie metod (ang. Method Overloading).
Kiedy mamy w klasie np. 2 metody o tej samej nazwie, ale z różnymi argumentami.
Już podczas kompilacji na podstawie przekazywanych argumentów można wywnioskować,
która z metod powinna zostać wywołana.

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.

AUTOBOXING AUTOBOXING I UNBOXING


Zapakowanie typów prostych Mechanizmy, które pozwalają:
Płynnie przechodzić między typami
prostymi a obiektowymi np. przypisując
UNBOXING Integer v = 10;
Rozpakowanie do typów prostych – odwrotna
Wykorzystywać typy proste, tam, gdzie
konwersja do wcześniejszego przypadku,
wymagane są obiekty np. new
następuje tu „rozpakowanie” typu obiektowego do
ArrayList().add(1);
typu prymitywnego.
https://stormit.pl/klasy-oslonowe/

KLASA OBJECT

KLASA OBJECT METODY


Główny element w hierarchii klas toString()
i domyślnie klasa nadrzędna wszystkich klas Zapewnia tekstową reprezentację obiektu.
w Javie – Każda klasa w Javie dziedziczy po
Domyślnie zwraca ciąg znaków składający
klasie Object. Jeśli klasa nie rozszerza żadnej
innej klasy, jest bezpośrednią klasą
się z nazwy klasy, której obiekt jest
potomną klasy Object – Jeśli rozszerza inną instancją, znaku „@” oraz reprezentacji
klasę, jest pośrednio klasą potomną klasy szesnastkowej hashCode'u.
Object. hashCode()
Zwraca różne liczby całkowite, dla różnych
Klasa dziedzicząca (dziecko) przejmuje obiektów. Powszechnie wykorzystywane do
zachowanie od rodzica, do którego może
optymalizacji w kolekcjach.
dodać swoje własne specyficzne cechy.
Metody klasy Object są dostępne dla equals(Object obj)
wszystkich klas Java – Niektóre z metod Służy, do porównania dwóch obiektów
z tej klasy można nadpisać. np. porównaniu 2 klientów po numerze
klienta lub peselu. Możliwe jest jej
nadpisanie. Jeżeli tego nie zrobimy
to domyślna implementacja z klasy Object
HASH sprawdzi identyczność obiektów (czy są
Generowany jest na podstawie w tym samym miejscu w pamięci).
stanu obiektu – wartości pól
obiektu, które wyróżniają go od
innych obiektów tej samej klasy
Jest jednoznaczny – każde
wygenerowanie powinno zwracać
EQUALS()
ten sam wynik
Ze względów wydajnościowych
możliwie niewielka liczba obiektów
powinno zwracać identyczny
hash.
KLASA OBJECT C.D.

KONTRAKT MIĘDZY METODAMI


HASHCODE() I EQUALS()
Każdy obiekt jest różny od null , czyli wywołanie x.equals(null) dla obiektu x różnego od null,
zawsze musi zwrócić false.
Relacja wyznaczona metodą equals musi być:
spójna, czyli każdorazowe wywołanie x.equals(y) (przy założeniu, że między wywołaniami
obiekty nie były modyfikowane) zawsze musi zwracać tę samą wartość – zawsze true albo
zawsze false.
przechodnia, czyli dla dowolnych zmiennych z , y i z, jeżeli x.equals(y) = true oraz y.equals(z) =
true , to x.equals(z) musi również = true.
symetryczna, czyli dla każdej pary zmiennych x i y, wyrażenie x.equals(y) ma wartość true wtedy
i tylko wtedy gdy y.equals(x) = true.
zwrotna, czyli dla każdej zmiennej x różnej od null wyrażenie x.equals(x) musi zwracać wartość =
true.
Jeżeli obiekty są różne (wg metody equals), to ich hashCode może być równy.
Jeżeli dwa obiekty są sobie równe (wg metody equals), to ich hashCode również musi być równy.
Brak zachowania kontraktu niestety nie powoduje błędów kompilacji. Może jednak przyczynić się do
powstania trudnych do wyśledzenia błędów podczas działania aplikacji.
https://stormit.pl/hashcode-equals/

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/

You might also like