Programowanie obiektowe Wykład 11 Podstawy programowania w Javie Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Programowanie obiektowe Wykład 11 Hello world Poniżej przedstawiono prosty program wypisujący tekst w oknie konsoli: //plik HelloWorld.java public class HelloWorld { public static void main(String[] args) System.out.println(„Hello world!”); } Podstawowe informacje dot. kodu: Java odróżnia małe i wielkie litery, Cały kod znajduje się wewnątrz klasy, Nazwę klasy zaczynamy dużą literą, Nazwa pliku, w którym znajduje się kod źródłowy, musi być równa nazwie klasy publicznej i musi mieć rozszerzenie .java. Do wyznaczania bloków instrukcji używamy nawiasów: {, }. Każda aplikacja Javy posiada statyczną metodę main. funkcje składowe klasy nazywamy metodami. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Kompilacja i uruchamianie Programowanie obiektowe Wykład 11 Kompilacja i uruchamianie Kompilacja : javac HelloWorld.java Uruchomienie: java HelloWorld Kompilator Javy automatycznie nadaje plikowi instrukcji nazwę HelloWorld.class i umieszcza go w tym samym katalogu co kod źrółowy. Interpreter java służy do wykonywania tzw. kodu pośredniego. Podczas uruchamiania tego pliku nie używamy rozszerzenia .class. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
System.out.println(„Hello world!”); //instrukcja wypisująca Programowanie obiektowe Wykład 11 Komentarze w Javie W Javie istnieją trzy sposoby komentowania kodu: 1. Komentarz w jednej linii za pomocą znaków //, np. System.out.println(„Hello world!”); //instrukcja wypisująca 2. Komentarz blokowy, który pozwala na umieszczenie dłuższego komentarza za pomocą /* …*/ /* To jest instrukcja wypisująca na ekran konsoli /* System.out.println(„Hello world!”); 3. Komentarz do tworzenia dokumentacji: /** … */ wraz z oznaczeniami: @param, @return, @throws, @author, @version, @since, @depricated, @see … . dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ .
Programowanie obiektowe Wykład 11 Typy danych w Javie Język Java jest językiem opisowym, tzn. każda zmienna musi mieć typ. Java dostarcza następujące typy prymitywne (tzn. wbudowane): Liczby całkowite Typ Pamięc Zakres int 4 bajty -2 147 483 648 – 2 147 483 647 short 2 bajty -32 768 – 32 767 long 8 bajtów -9 223 372 036 854 775 808L – 9 223 372 036 854 775 807L byte 1 bajt -128 – 127 W języku Java zakres liczb całkowitych nie zależy od maszyny na której uruchamiany jest kod. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Typy danych w Javie c.d. Typy zmiennoprzecinkowe Typ Pamięc Zakres Programowanie obiektowe Wykład 11 Typy danych w Javie c.d. Typy zmiennoprzecinkowe Typ Pamięc Zakres float 4 bajty double 8 bajtów Liczby typu float mają sufiks F, np. 5.7843F. Liczby zmiennoprzecinkowe bez sufiksu F traktowane są jako liczby typu double. Wartości zmiennoprzecinkowe Double.POSITIVE_INFINITY dodatnia nieskończoność Double.NEGATIVE_INFINITY ujemna nieskończoność Double.NaN wartość nieliczbowa dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Typy danych w Javie c.d. Typ znakowy Programowanie obiektowe Wykład 11 Typy danych w Javie c.d. Typ znakowy Przykłady znaków: ‘f’, ‘H’, ‘ ‘, ‘\n’ Typ: char (znaki w Unicode) Znaki specjalne Znak Nazwa Unicode \b backspace \u0008 \t tabulacja \u0009 \n koniec linii \u000a \r powrót karetki \u000d \” cudzysłów \u0022 \’ apostrof \u0027 \\ backslash \u005c dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Typy danych w Javie c.d. Typ logiczny Programowanie obiektowe Wykład 11 Typy danych w Javie c.d. Typ logiczny Służy do opisywania wartości logicznych. Typ: boolean Wartości: true, false Uwaga. W Javie nie można dokonać konwersji pomiędzy liczbami a wartościami logicznymi. Porównaj poniższe kody w C++ i Javie: C++ int x=0; if (x=0) { cout << „Zmienna x ma wartość 0”; } Java int x=0; if (x=0) //błąd!!! { System.out.println(„Zmienna x ma wartość 0”); } dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Programowanie obiektowe Wykład 11 Zmienne - deklaracja W Javie każda zmienna ma określony typ. Deklarujemy zmienną pisząc najpierw typ, następnie nazwę zmiennej, np.: int x; double y, z; char z; long l; Nazwę zmiennej zaczynamy literą. Nazwa składa się z ciągu liter i liczb. Wielkość liter jest istotna. Można deklarować kilka zmiennych w jednej linii. Uwaga. Nie można używać wartości niezainicjalizowanych zmiennych. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Zmienne – inicjalizacja i przypisanie Programowanie obiektowe Wykład 11 Zmienne – inicjalizacja i przypisanie Po deklaracji zmiennej musi nastąpić jej inicjalizacja bądź przypisanie. Zobacz przykłady poniżej: int x; // deklaracja x = 10; // przypisanie char z; // deklaracja z = ‘$’; // przypisanie long l; // deklaracja l = 876567867549L; // przypisanie float f = 0.6543F; // deklaracja i inicjalizacja zmiennej W jednym bloku instrukcji (w ramach jednego zakresu) nie można zadeklarować dwóch zmiennych o tych samych nazwach. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Programowanie obiektowe Wykład 11 Stałe Aby zdefiniować dane wyrażenie jako stałe, czyli takie, którego wartość nie może ulec zmianie, używamy słowa kluczowego final. Nazwy stałych składają się z dużych liter. final double PI = 3.1416; Poniższy kod przedstawia użycie stałej klasowej, czyli wspólnej dla wszystkich obiektów tej samej klasy. public class Przyklad { public static final double PI = 3.1416; public static void main(String[] args) double r = 2.3; System.out.println(„Obwód okręgu o promieniu ” + r + „ wynosi ” + 2*PI*r); } dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Operatory w Javie + dodawanie - odejmowanie * mnożenie Programowanie obiektowe Wykład 11 Operatory w Javie + dodawanie - odejmowanie * mnożenie / dzielenie (gdy dwa argumenty są całkowite, wówczas jest to dzielenie całkowite, przeciwnym przypadku jest to dzielenie zmiennoprzecinkowe). % reszta z dzielenia Zapisy skrócone x+=3; // x = x + 3; y-=4 ; // z = z – 4; z*=5; // z = z * 5; z/=3; // z = z / 3; t%=5; // t = t % 5; Inkrementacja i dekrementacja int x=3; x++; //zwiększenie x o 1 x--; //zmniejszenie x o 1 int a = 3; int b = 3; int c = 2* ++a; //ile wynosi c? int d = 2* a++; //ile wynosi d? dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Operatory relacji == operator porównania != operator nierówności Programowanie obiektowe Wykład 11 Operatory relacji == operator porównania != operator nierówności <, >, <=, >= operatory relacji mniejszości, większości && logiczna koniunkcja || logiczna alternatywa Czy poniższy kod zwróci błąd? int x = 0; if (x!=0 && 1/x == 1) { … } Nie, gdyż operatory &&, || używają skróconego sposobu obliczania wartości logicznej. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Operatory bitowe == operator porównania != operator nierówności Programowanie obiektowe Wykład 11 Operatory bitowe == operator porównania != operator nierówności <, >, <=, >= operatory relacji mniejszości, większości && logiczna koniunkcja || logiczna alternatywa Czy poniższy kod zwróci błąd? int x = 0; if (x!=0 && 1/x == 1) { … } Nie, gdyż operatory &&, || używają skróconego sposobu obliczania wartości logicznej. >> Operator przesunięcia bitów w prawo (najstarsze bity wypełnia znakiem liczby) << Operator przesunięcia bitów w lewo >>> Operator przesunięcia bitów w prawo (najstarsze bity wypełnia zerami) dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Konwersja i rzutowanie Programowanie obiektowe Wykład 11 Konwersja i rzutowanie Konwersje, podczas których możliwa jest utrata informacji, realizowane są za pomocą rzutowania. Np.: double x = 10.9991; int n = (int)x; Uwaga. Nie można wykonać konwersji między typami numerycznymi a wartościami typu boolean. Podczas stosowania operatora dwuargumentowego dla typów numerycznych, obydwa operandy zostaną skonwertowane w jeden typ. Jeżeli jeden z operandów jest typu double, drugi zostanie skonwertowany na double. W drugiej kolejności, jeżeli jeden z operandów jest typu float, drugi zostanie skonwertowany na typ float. W innym przypadku, jeżeli którykolwiek z operandów jest typu long, drugi również zostanie skonwertowany na typ long. W innym przypadku obydwa operandy zostaną skonwertowane na typ int. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Kolejność i łączność operatorów Programowanie obiektowe Wykład 11 Kolejność i łączność operatorów Operator Łączność [] . () - wywołanie funkcji -> (od lewej do prawej) ! - ++ -- +(1 arg.) -(1 arg.) ()- rzutowanie new <- (od prawej do lewej) * / % + - << >> >>> < > <= >= instanceof -> == != & ^ | && || ?: = += -= *= /= %= &= |= ^= <<= >>= >>>= <- dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Programowanie obiektowe Wykład 11 Łańcuchy Język Java nie posiada wbudowanego typu łańcuchowego. Obsługa łańcuchów w Javie zapewniona jest przez standardową bibliotekę Javy String. Przykłady łańcuchów: String t1 = „Hello world”; String t2 = „Ala ma kota”; String t3 = „”; Łączenie łańcuchów (konkatenacja) W celu połączenia dwóch łańcuchów używamy operatora „+”. Np.: String t4 = „Ala ” + „ma ” + „kota.”; Uwaga. Każdy obiekt można skonwertować na obiekt klasy String. Wybrane metody klasy String substring(int,int), length(), charAt(int), equals(Object), equalsIgnoreCase(String), compareTo(String), toLowerCase(), toUpperCase(), trim() dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Dokumentacja API Strona dokumentacji … Programowanie obiektowe Wykład 11 Dokumentacja API Strona dokumentacji … dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
JOptionPane.showInputDialog(String) Programowanie obiektowe Wykład 11 Czytanie danych ze standardowego wejścia Wywołanie okna dialogowego służącego do wpisywania danych z klawiatury: JOptionPane.showInputDialog(String) Metoda zwraca wpisany przez użytkownika łańcuch. W przypadku, gdy zależy nam na wczytaniu wartości liczbowej, należy dokonać konwersji. String tekstLiczba = JOptionPane.showInputDialog(„Podaj liczbę całkowitą”); int liczba = Integer.parseInt(tekstLiczba); dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Tablice Programowanie obiektowe Wykład 11 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
KONIEC Dziękuję za uwagę Programowanie obiektowe Wykład 11 dr Dariusz Wardowski, Katedra Analizy Nieliniowej