Przewiń do głównej treści
  1. Java - Tutorial Programowania (1990s)/

3. Podstawy programowania

·985 słów·5 min·

2.2 Klasyczne konstrukcje programowania imperatywnego w Javie
#

Wewnętrzne typy danych
#

Język Java udostępnia programiście szereg standardowych typów wartości, z których większość można spotkać także w innych językach programowania. Typy te nazywane są w oryginale “intrinsic types”, co przetłumaczyliśmy jako “typy wewnętrzne”. W poniższej tabeli zawarto opis wewnętrznych typów danych, zawierający dla każdego typu jego nazwę oraz wielkość pamięci zajmowanej przez poszczególne wartości typu.

Typ danychRozmiar (w bitach)
boolean8
byte8
char16
short16
int32
long64
float32
double64

Tabela 2-1 Zestawienie typów wewnętrznych w Javie

Zmienne typu char są reprezentowane na 16 bitach ponieważ możemy jako wartość zmiennej typu char użyć dowolnego znaku ze zbioru znaków Unicode.

Literały
#

W Javie mamy do dyspozycji następujący zbiór literałów: literały całkowite (dziesiętne, ósemkowe i szesnastkowe), odpowiadające typom int i long, literały rzeczywiste (stałoprzecinkowe i zmiennoprzecinkowe), odpowiadające typom float i double, literały znakowe i łańcuchowe, związane z typem char i String oraz literały logiczne reprezentujące dwie wartości logiczne typu boolean.

Dziesiętne literały całkowite należące do typu int są ciągami cyfr dziesiętnych, ewentualnie poprzedzonymi znakiem. Umieszczenie na końcu literału całkowitego znaku ‘L’ lub ’l’ wskazuje, że mamy do czynienia z literałem typu long. Literały o wartościach większych niż ‘2.147.483.647’ dziesiętnie automatycznie przyjmują postać liczby typu long.

Literały rozpoczynające się znakiem ‘0’ są liczbami ósemkowymi, natomiast literały zaczynające się sekwencją 0x lub 0X stanowią liczby szesnastkowe. Do zapisu cyfr szesnastkowych można używać zarówno małych jak i wielkich liter alfabetu (od A do F).

Literały rzeczywiste zapisujemy w postaci stałoprzecinkowej lub zmiennoprzecinkowej (z wykładnikiem). Domyślnie literały rzeczywiste mają typ double. Umieszczenie na końcu literału znaku ‘F’ lub ‘f’ wskazuje, że mamy do czynienia z literałem typu float. Można także użyć znaku ‘D’ lub ’d’ dla podkreślenia, że literał ma typ double.

Literały znakowe umieszcza się w apostrofach. Wewnątrz apostrofów można umieścić dowolny znak lub sekwencję ucieczki (escape sequence). Java obsługuje następujące sekwencje ucieczki:

  • \n - nowa linia
  • \t - tabulator
  • \b - backspace
  • \r - powrót karetki
  • \f - nowa strona
  • \" - cudzysłów
  • \' - apostrof
  • \\ - ukośnik wsteczny
  • \ooo - znak o kodzie ósemkowym ooo (do 3 cyfr)
  • \uxxxx - znak Unicode o kodzie szesnastkowym xxxx

Literały łańcuchowe zapisuje się między cudzysłowami. Wewnątrz cudzysłowów można używać tych samych sekwencji ucieczki co w literałach znakowych.

Literały logiczne to true i false odpowiadające wartościom logicznym prawda i fałsz.

Wyrażenia
#

Wyrażenia w Javie składają się ze zmiennych, literałów oraz operatorów. Java udostępnia następujące operatory:

Operatory arytmetyczne
#

OperatorZnaczeniePierwszeństwo
+dodawanie4
-odejmowanie4
*mnożenie3
/dzielenie3
%reszta z dzielenia3

Operatory logiczne
#

OperatorZnaczeniePierwszeństwo
!negacja1
&&iloczyn logiczny11
``

Operatory relacyjne
#

OperatorZnaczeniePierwszeństwo
<mniejsze niż6
<=mniejsze lub równe6
>większe niż6
>=większe lub równe6
==równe7
!=różne7

Operatory bitowe
#

OperatorZnaczeniePierwszeństwo
~negacja bitowa1
&iloczyn bitowy8
``suma bitowa
^różnica symetryczna9
<<przesunięcie w lewo5
>>przesunięcie w prawo ze znakiem5
>>>przesunięcie w prawo bez znaku5

Operatory przypisania
#

OperatorZnaczeniePierwszeństwo
=przypisanie13
+=dodaj i przypisz13
-=odejmij i przypisz13
*=pomnóż i przypisz13
/=podziel i przypisz13
%=reszta z dzielenia i przypisz13
&=iloczyn bitowy i przypisz13
`=`suma bitowa i przypisz
^=różnica symetryczna i przypisz13
<<=przesuń w lewo i przypisz13
>>=przesuń w prawo ze znakiem i przypisz13
>>>=przesuń w prawo bez znaku i przypisz13

Tabela 2-2 Zestawienie operatorów pierwszeństwa

Zmienne
#

Zmienne w Javie muszą być zadeklarowane przed pierwszym użyciem. Deklaracja zmiennej składa się z typu i nazwy zmiennej:

int liczba;
double temperatura;
boolean flaga;

Można również inicjalizować zmienne podczas deklaracji:

int x = 10;
double pi = 3.14159;
boolean prawda = true;

Nazwy zmiennych
#

Nazwy zmiennych w Javie muszą spełniać następujące zasady:

  • Mogą zawierać litery, cyfry, znak podkreślenia (_) i znak dolara ($)
  • Muszą zaczynać się od litery, znaku podkreślenia lub znaku dolara
  • Nie mogą być słowami kluczowymi Java
  • Rozróżniane są małe i wielkie litery

Konwencja nazewnictwa w Javie:

  • Zmienne i metody: nazwaZmiennej (camelCase)
  • Klasy: NazwaKlasy (PascalCase)
  • Stałe: NAZWA_STALEJ (wielkie litery z podkreśleniami)

Instrukcje
#

Wprowadzenie
#

Instrukcje są podstawowymi jednostkami wykonania programu. Java oferuje różne typy instrukcji dla kontroli przepływu programu.

Instrukcje warunkowe
#

Instrukcja if
#

if (warunek) {
    // instrukcje wykonywane gdy warunek jest prawdziwy
}

Instrukcja if-else
#

if (warunek) {
    // instrukcje wykonywane gdy warunek jest prawdziwy
} else {
    // instrukcje wykonywane gdy warunek jest fałszywy
}

Instrukcja switch
#

switch (wyrażenie) {
    case wartość1:
        // instrukcje
        break;
    case wartość2:
        // instrukcje
        break;
    default:
        // instrukcje domyślne
        break;
}

Instrukcje iteracyjne
#

Pętla for
#

for (inicjalizacja; warunek; inkrementacja) {
    // ciało pętli
}

Pętla while
#

while (warunek) {
    // ciało pętli
}

Pętla do-while
#

do {
    // ciało pętli
} while (warunek);

Instrukcje sterujące
#

Instrukcja break
#

Instrukcja break służy do przerwania wykonywania pętli lub instrukcji switch:

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break; // przerwij pętlę gdy i = 5
    }
    System.out.println(i);
}

Instrukcja continue
#

Instrukcja continue powoduje przejście do następnej iteracji pętli:

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue; // pomiń parzyste liczby
    }
    System.out.println(i);
}

Instrukcja return
#

Instrukcja return kończy wykonywanie metody i opcjonalnie zwraca wartość:

public int dodaj(int a, int b) {
    return a + b;
}

Blok instrukcji
#

Blok instrukcji to grupa instrukcji otoczona nawiasami klamrowymi {}. Bloki definiują zakres widoczności zmiennych:

{
    int x = 10; // x jest widoczne tylko w tym bloku
    System.out.println(x);
} // koniec zakresu zmiennej x

Zmienne zadeklarowane wewnątrz bloku są widoczne tylko w tym bloku i jego podblokach. Po opuszczeniu bloku zmienne są automatycznie usuwane z pamięci.

Czy ten artykuł był pomocny? Podziel się nim z innymi!