← Back to course

Twój pierwszy program w Javie

Witaj ponownie! ☕

W poprzedniej lekcji przygotowaliśmy nasze środowisko programistyczne:

Teraz wreszcie pora zrobić to, po co tu przyszliśmy:

napisać trochę Javy.

W tej lekcji stworzymy nasz pierwszy prawdziwy program Java:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello, InnoMarts!");
    }

}

Na pierwszy rzut oka to podejrzanie dużo tekstu tylko po to, żeby wyświetlić jedno zdanie.

Spokojnie.

Pod koniec tej lekcji większość z tego będzie już miała sens.

Twój pierwszy program Java w IntelliJ IDEA


Czego się nauczysz

Po tej lekcji będziesz wiedzieć, jak:

Tak.

Psucie programu oficjalnie jest częścią lekcji.

Witaj w programowaniu. 😄


1. Otwórz projekt Java

Uruchom IntelliJ IDEA i otwórz projekt utworzony w Lekcji 1:

java-course

W panelu Project powinieneś zobaczyć coś podobnego:

java-course
└── src

Folder src to miejsce, w którym będzie znajdował się nasz kod źródłowy Java.

Teraz w końcu trzeba coś do niego dodać.


2. Utwórz pierwszą klasę Java

Kliknij prawym przyciskiem myszy folder src.

Wybierz:

New → Java Class

Wpisz:

Main

i naciśnij Enter.

IntelliJ IDEA utworzy plik:

Main.java

W środku powinieneś zobaczyć coś podobnego:

public class Main {

}

Gratulacje.

Właśnie utworzyłeś swoją pierwszą klasę Java.

Na razie nie robi absolutnie nic.

Ale nie oceniajmy jej zbyt szybko.

Istnieje od około pięciu sekund.


3. Czym jest klasa?

Programy Java są zbudowane wokół klas.

Na razie możesz myśleć o klasie jak o kontenerze na powiązany kod.

W dalszej części kursu będziemy tworzyć klasy takie jak:

User
Car
Product
BankAccount
Task
Order

Ale dziś zaczynamy od klasycznej:

Main

Deklaracja klasy wygląda tak:

public class Main {

}

Rozłóżmy ją na części.


public

Słowo:

public

to modyfikator dostępu.

Na razie wystarczy wiedzieć, że sprawia on, iż klasa może być dostępna z innych części programu.

Do modyfikatorów dostępu wrócimy dokładniej przy programowaniu obiektowym.

Nie próbuj więc dziś zapamiętać całego wszechświata Javy.

Twój mózg ma już wystarczająco dużo otwartych kart.


class

Słowo kluczowe:

class

mówi Javie:

"Definiuję klasę."

Java ma wiele słów kluczowych o specjalnym znaczeniu.

class jest jednym z nich.


Main

To nazwa naszej klasy:

Main

Nazwy klas w Javie zwykle zaczynają się wielką literą.

Na przykład:

Main
User
Product
BankAccount
ShoppingCart

Ważna rzecz:

Java rozróżnia wielkie i małe litery.

Czyli jest case-sensitive.

To oznacza, że:

Main
main
MAIN

to trzy różne nazwy.

Java nie patrzy na nie i nie mówi:

"No dobrze, prawie to samo."

Java jest mniej wyrozumiała niż Twoi znajomi.


4. Dlaczego plik nazywa się Main.java?

Nasz plik nazywa się:

Main.java

a wewnątrz mamy:

public class Main

Jeśli klasa najwyższego poziomu jest zadeklarowana jako public, nazwa pliku musi odpowiadać nazwie klasy.

Czyli:

public class Main

powinno znajdować się w:

Main.java

A:

public class User

w:

User.java

Natomiast:

public class VeryImportantEnterpriseApplication

trafiłoby do:

VeryImportantEnterpriseApplication.java

Tak.

Java lubi zasady.

I długie nazwy.

Zwłaszcza długie nazwy.


5. Dodaj metodę main()

Teraz zmień zawartość pliku na:

public class Main {

    public static void main(String[] args) {

    }

}

Najważniejsza nowa linia to:

public static void main(String[] args)

To jest metoda main.

W prostym programie Java właśnie od niej zaczyna się wykonanie programu.

Możesz wyobrazić ją sobie jako drzwi wejściowe.

Kiedy Java pyta:

"Od czego mam zacząć?"

odpowiedź brzmi:

main()

6. Straszne public static void main(String[] args)

Ta linia potrafi przestraszyć początkujących:

public static void main(String[] args)

Wygląda trochę tak, jakby ktoś próbował zmieścić połowę Javy w jednym wierszu.

Rozbijmy ją na części.


public

public

oznacza, że metoda może być dostępna spoza klasy.

Na razie tyle wystarczy.


static

static

pozwala Javie użyć tej metody bez wcześniejszego tworzenia obiektu klasy Main.

Obiekty pojawią się później.

Znacznie później.

Na razie zapamiętaj:

static pozwala Javie rozpocząć tutaj bezpośrednio.


void

void

oznacza, że metoda niczego nie zwraca.

Później stworzymy metody, które zwracają na przykład:

42
"Hello"
true
obiekt User

Ale main() niczego nie zwraca.

Dlatego używamy:

void

main

To nazwa metody:

main

Java oczekuje dokładnie tej nazwy dla standardowego punktu startowego aplikacji.

Zwróć uwagę na małe m.

To:

main

i to:

Main

to dwie różne rzeczy.

Jedno jest metodą.

Drugie klasą.


String[] args

Na końcu mamy:

String[] args

Pozwala to programowi otrzymywać argumenty z wiersza poleceń.

Na przykład kiedyś moglibyśmy uruchomić:

java Main Viktor

i otrzymać:

Viktor

wewnątrz programu.

Na razie nie będziemy używać argumentów wiersza poleceń.

Tablice też pojawią się później.

Na ten moment zapamiętaj:

String[] args jest częścią standardowej deklaracji metody main().

I to wystarczy.

Nie musimy jeszcze przywoływać specyfikacji języka Java.


7. Niech program coś powie

Program potrafi już wystartować, ale nadal niczego nie pokazuje.

Naprawmy to.

Dodaj wewnątrz main():

System.out.println("Hello, InnoMarts!");

Cały program powinien wyglądać tak:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello, InnoMarts!");
    }

}

To jest kompletny, działający program Java.

Mały?

Tak.

Ważny?

Też tak.

Każda duża aplikacja zaczyna się od małych elementów.

Chociaż miejmy nadzieję, że Twoje przyszłe oprogramowanie bankowe będzie robiło trochę więcej niż tylko mówiło "Hello".


8. Uruchom pierwszy program

IntelliJ IDEA powinien pokazać zieloną ikonę Run obok metody main().

Kliknij ją.

Możesz też kliknąć prawym przyciskiem w edytorze i wybrać:

Run 'Main.main()'

Na dole IntelliJ IDEA pojawi się okno Run.

Powinieneś zobaczyć:

Hello, InnoMarts!

To wynik działania Twojego programu.

Napisałeś kod Java.

Java go skompilowała.

JVM go wykonała.

A komputer wykonał polecenie.

Ciesz się tą chwilą.

Później komputer zacznie mieć własne zdanie.


9. Co robi System.out.println()?

Przyjrzyjmy się:

System.out.println("Hello, InnoMarts!");

To całkiem sporo znaków jak na jedną prostą wiadomość.

Rozbijmy to na części.


System

System

to klasa dostarczana przez Javę.

Zawiera funkcje związane ze środowiskiem uruchomieniowym programu.


out

out

reprezentuje standardowe wyjście.

Dla naszych pierwszych programów możesz myśleć o tym po prostu jako o:

konsoli

println

println

oznacza mniej więcej:

wypisz linię.

Wyświetla tekst i przechodzi do kolejnego wiersza.

Czyli:

System.out.println("Hello!");

wyświetli:

Hello!

i przeniesie kursor do następnej linii.


10. Wypisywanie kilku linii

Sprawmy, aby program był trochę bardziej rozmowny.

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello!");
        System.out.println("Welcome to Java.");
        System.out.println("This is my first Java program.");
    }

}

Uruchom go.

Powinieneś zobaczyć:

Hello!
Welcome to Java.
This is my first Java program.

Każde println() wypisuje jedną linię.

Proste.

Przydatne.

I znacznie ciekawsze niż pusta klasa wpatrująca się w nicość.


11. print() kontra println()

Java ma również:

System.out.print()

Zwróć uwagę, że brakuje:

ln

Porównajmy oba przypadki.

Używając print()

System.out.print("Hello ");
System.out.print("Java");
System.out.print("!");

Wynik:

Hello Java!

Wszystko pozostaje w jednej linii.

Teraz spróbuj:

System.out.println("Hello");
System.out.println("Java");
System.out.println("!");

Wynik:

Hello
Java
!

Różnica:

print()   → zostaje w tej samej linii
println() → przechodzi do następnej linii

Będziesz używać obu.

Ale na początku println() prawdopodobnie zostanie Twoim najlepszym przyjacielem.


12. Czym jest String?

Spójrz na:

"Hello, InnoMarts!"

To jest String.

String reprezentuje tekst.

Przykłady:

"Java"
"My name is Viktor"
"I need more coffee."
"Why is the compiler angry again?"

To wszystko są Stringi.

Tekst w Javie zapisujemy między podwójnymi cudzysłowami:

" "

Później poświęcimy Stringom osobną lekcję.

Na razie zapamiętaj:

Jeśli chcesz, aby Java traktowała coś jak tekst, zwykle potrzebujesz podwójnych cudzysłowów.


13. Co się stanie bez cudzysłowów?

To działa:

System.out.println("Hello");

Teraz spróbuj:

System.out.println(Hello);

IntelliJ zacznie zgłaszać problem.

Dlaczego?

Bez cudzysłowów Java zakłada, że:

Hello

jest nazwą czegoś.

Może zmiennej.

Może pola.

Może jakiegoś innego tajemniczego elementu, którego jeszcze nie stworzyliśmy.

Ponieważ Java nie może go znaleźć, dostaniesz błąd.

Przywróć cudzysłowy:

System.out.println("Hello");

i wszystko znów działa.

Na tyle, na ile kompilator potrafi być szczęśliwy.


14. Czym jest instrukcja?

Ta linia:

System.out.println("Hello!");

jest instrukcją Java.

Instrukcja mówi programowi:

Zrób to.

Na przykład:

System.out.println("One");
System.out.println("Two");
System.out.println("Three");

to trzy instrukcje.

Java wykonuje je od góry do dołu.

Dlatego wynik będzie:

One
Two
Three

a nie:

Three
One
Banana
Two

Komputery są bardzo przewidywalne, kiedy kod jest poprawny.


15. Średnik ;

Spójrz na:

System.out.println("Hello");

Zwróć uwagę na średnik:

;

W Javie wiele instrukcji kończy się średnikiem.

Możesz traktować go jak kropkę na końcu zdania.

Teraz usuń go:

System.out.println("Hello")

IntelliJ powinien natychmiast pokazać problem.

Spróbuj uruchomić program.

Możesz zobaczyć błąd podobny do:

';' expected

Java właściwie pyta:

"Przepraszam, czy ta instrukcja już się skończyła?"

Przywróć średnik:

System.out.println("Hello");

i wszystko znów działa.


16. Nawiasy klamrowe { }

Program zawiera nawiasy klamrowe:

{
}

Definiują one bloki kodu.

Na przykład:

public class Main {

}

te nawiasy zawierają wszystko, co należy do klasy.

W środku klasy mamy:

public static void main(String[] args) {

}

Te nawiasy zawierają wszystko, co należy do main().

Strukturalnie wygląda to tak:

Klasa Main
{
    metoda main
    {
        instrukcje
    }
}

Bloki wewnątrz innych bloków pojawiają się w Javie praktycznie wszędzie.


17. Wcięcia są ważne — dla ludzi

Technicznie nawet taki kod może działać:

public class Main {
public static void main(String[] args) {
System.out.println("Hello");
}
}

Java go zrozumie.

Człowiek też może go zrozumieć.

Ale prawdopodobnie nie będzie z tego powodu szczęśliwy.

Lepiej pisać tak:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello");
    }

}

Wcięcia sprawiają, że struktura jest czytelna.

IntelliJ IDEA potrafi automatycznie formatować kod.

Na wielu konfiguracjach skrót to:

Ctrl + Alt + L

Spróbuj.

Widok brzydkiego kodu, który nagle staje się uporządkowany, daje zaskakująco dużo satysfakcji.


18. Komentarze

Czasem chcemy zostawić notatkę w kodzie.

Java powinna ją zignorować.

Człowiek powinien ją przeczytać.

Do tego służą komentarze.


Komentarz jednoliniowy

Komentarz w jednej linii zaczyna się od:

//

Przykład:

public class Main {

    public static void main(String[] args) {
        // Wyświetl powitanie
        System.out.println("Hello, InnoMarts!");
    }

}

Java ignoruje:

// Wyświetl powitanie

Komentarz wieloliniowy

Możesz też użyć komentarza obejmującego kilka linii:

/*
To jest komentarz.
Java ignoruje cały ten tekst.
Nawet to zdanie.
*/

Na przykład:

public class Main {

    public static void main(String[] args) {

        /*
        To nasz pierwszy program Java.
        Niedługo stanie się ciekawszy.
        */

        System.out.println("Hello, InnoMarts!");
    }

}

Komentarze są przydatne.

Ale nie musisz opisywać rzeczy całkowicie oczywistych.

To:

// Wyświetl Hello
System.out.println("Hello");

niewiele wnosi.

Dobre komentarze częściej wyjaśniają dlaczego, a nie tylko co robi kod.


19. Zepsujmy wszystko celowo 💥

Teraz ważna umiejętność programisty:

celowe psucie rzeczy.

Brzmi dziwnie.

Ale jeśli sam wywołasz błąd, łatwiej go później rozpoznać.


Błąd 1 — Usuń średnik

Zacznij od:

System.out.println("Hello");

Usuń średnik:

System.out.println("Hello")

Sprawdź, co pokazuje IntelliJ.

Spróbuj uruchomić program.

Potem napraw błąd.


Błąd 2 — Napisz system zamiast System

Spróbuj:

system.out.println("Hello");

Java rozróżnia wielkie i małe litery.

Dlatego:

System

i:

system

to różne nazwy.

Popraw:

System.out.println("Hello");

Błąd 3 — Zapomnij o cudzysłowie

Spróbuj:

System.out.println("Hello);

Java nie wie wtedy, gdzie kończy się String.

Popraw:

System.out.println("Hello");

Błąd 4 — Usuń nawias klamrowy

Usuń jeden:

}

z programu.

Możesz nagle zobaczyć wiele błędów.

To ważna lekcja:

Jeden błąd może wywołać wiele komunikatów o błędach.

Jeśli IntelliJ pokazuje 12 problemów, nie znaczy to od razu, że popełniłeś 12 błędów.

Czasem brakuje jednego nawiasu i Java traci orientację.

Zawsze zacznij od pierwszego błędu.


20. Błędy kompilatora są przydatne

Początkujący często widzą czerwony tekst i myślą:

"Zniszczyłem wszystko."

Zwykle nie.

Kompilator próbuje Ci pomóc.

Na przykład:

';' expected

to naprawdę przydatna informacja.

Java oczekiwała:

;

i go nie znalazła.

To nie znaczy:

"Jesteś fatalny w Javie."

To raczej:

"Pogubiłem się w tym miejscu. Sprawdź tutaj."

Umiejętność czytania komunikatów błędów jest jedną z najważniejszych umiejętności programisty.


21. Twój pierwszy spersonalizowany program

Teraz zmodyfikuj program tak, aby mówił coś o Tobie.

Na przykład:

public class Main {

    public static void main(String[] args) {
        System.out.println("My name is Viktor.");
        System.out.println("I am learning Java.");
        System.out.println("I use IntelliJ IDEA.");
        System.out.println("My code has not exploded yet.");
    }

}

Użyj własnego imienia i własnych zdań.

Chyba że naprawdę masz na imię Viktor.

Wtedy możesz oszczędzić trochę pisania. 😄


🎯 Wyzwanie 1 — Developer Card

Napisz program, który wyświetli:

========================
     DEVELOPER CARD
========================
Name: Viktor
Language: Java
IDE: IntelliJ IDEA
Level: Beginner
Goal: Build real projects
========================

Użyj kilku:

System.out.println()

Spróbuj napisać cały program samodzielnie.


🎯 Wyzwanie 2 — print() + println()

Spróbuj otrzymać dokładnie taki wynik:

Hello, Java!
Let's build something.

ale użyj w rozwiązaniu zarówno:

System.out.print()

jak i:

System.out.println()

Istnieje kilka poprawnych rozwiązań.

Eksperymentuj.


🎯 Wyzwanie 3 — Przewidź wynik

Spójrz na kod:

public class Main {

    public static void main(String[] args) {
        System.out.print("Java ");
        System.out.print("is ");
        System.out.println("fun!");
        System.out.println("Let's continue.");
    }

}

Zanim naciśniesz Run, spróbuj dokładnie przewidzieć wynik.

Potem uruchom program i porównaj.

To bardzo dobry nawyk.

Zamiast zawsze pytać:

"Co zrobił komputer?"

zacznij pytać:

"Czego oczekuję od komputera?"

To mała zmiana, ale duży krok w stronę myślenia jak programista.


22. Spójrzmy jeszcze raz na cały program

Nasz pierwotny program wyglądał tak:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello, InnoMarts!");
    }

}

Na początku lekcji wyglądał tajemniczo.

Teraz rozumiemy już całkiem sporo.

public class Main

tworzy klasę Main.

public static void main(String[] args)

definiuje punkt startowy aplikacji.

System.out.println(...)

wyświetla coś w konsoli.

"Hello, InnoMarts!"

to String.

;

kończy instrukcję.

A:

{ }

tworzą bloki kodu.

Całkiem sporo jak na Lekcję 2.


🎓 Czego się nauczyłeś

W tej lekcji nauczyłeś się:

Najważniejsze:

Potrafisz już samodzielnie stworzyć, uruchomić, zmodyfikować, zepsuć i naprawić prosty program Java. ☕

To już prawdziwy postęp.


Co dalej?

Potrafimy już pisać kod Java.

Ale za kulisami wciąż dzieje się coś ważnego.

Kiedy klikasz:

Run

w jaki sposób:

Main.java

zamienia się w działający program?

Co właściwie tworzy kompilator Java?

Czym jest bytecode?

Co dokładnie robi JVM?

I dlaczego ten sam kod Java może działać na Windows, Linux i macOS?

Tego dowiemy się w następnej lekcji.

Dalej → Lekcja 3: Jak Java uruchamia Twój kod