w2 java, informatyka, Wykłady Java B.Pańczyk
[ Pobierz całość w formacie PDF ]
Typy proste JAVA Podstawy programowania • Liczby całkowite – byte (1B) -128...128 np. 1, 01, 0x01 – short (2B) -32 768...32 767 np. 128, 0xFF – int (4B) -2 147 483 648... 2 147 483 647 np. 32768, 0x1000 – long (8B) -9 223 372 036 854 775 808.. 9 223 372 036 854 775 808 np. 3l, 3L, 2 147 483 648 • Liczby rzeczywiste – float (4B) 1.4E-45...3.4E+38 np. 3f, 0.3F, 3e+10, 3E+10 – double (8B) 4.9E-324...1.7E+308 np. 0.3, 0.3d, 0.3D, 3E+100 • Znaki Unicodu - char (2B) -0...65556 np. 'a',\u0013 • Warto ś ci logiczne - boolean (1B) Beata Pańczyk - Java (Wykład 2) np. true, false 2 Komentarze Zmienne i znaki specjalne • // komentarz jedna linia • /* komentarz */ więcej, niŜ jedna linia • /** komentarz*/ specjalny typ komentarzy Javy, wykorzystywany przy tworzeniu dokumentacji (polecenie JDK javadoc ) • Nazwa zmiennej - Java rozróŜnia duŜe i małe litery - nazwa moŜe zaczynać się od litery, znaków: _ i $, nie moŜe - od cyfry - w nazwie mogą występować znaki Unicode - umownie - początek nazwy z małej litery • Znaki specjalne \u dddd oznacza kod znaku Unicode np. \t w Unicode odpowiada: \u0009 \" w Unicode odpowiada:\u0022 3 4 Deklaracje Deklaracje a definicje • dane (poza typami prostymi) są obiektami , których atrybuty i metody definiują określone klasy. Nazwa klasy jest nazwą typu obiektu. • Deklaracja zmiennej lub stałej: nazwa_typu nazwa_zmiennej_lub_stałej np. int a; //deklaracja zmiennej całkowitej a char c; //deklaracja zmiennej char String s;//deklaracja zmiennej klasy String Button b;//deklaracja zmiennej klasy Button • Definicja - wydziela w pamięci miejsce na przechowanie zmiennej danego typu • Dla typów prostych deklaracja=definicja • Deklaracja zmiennej typu obiektowego jest deklaracją (i definicją) referencji do obiektu, nie wydziela natomiast w pamięci miejsca na przechowanie samego obiektu • Referencja - odniesienie, wskazanie na miejsce w pamięci, gdzie moŜe być przechowywany dany obiekt 5 6 1 Deklaracje - przykłady Operatory • Po deklaracji Button b; zmienna b zawiera referencję do obiektu typu Button, ale na razie nie wskazuje na Ŝaden obiekt b=new Button(); tworzy obiekt a zwrócona przez new referencja wskazuje na zmienną b • inicjalizowanie danych w deklaracjach: int a=1; char c='a'; Button b=new Button(); String s="Programowanie w Javie" • deklarowanie stałych ze specyfikatorem final final int ROZMIAR=1024; • Arytmetyczne: + ,- ,* ,/ , %, ++ , -- • Relacyjne: <. <=, >, >=, = =, != • Przypisania: =, *=, /+, +=, -= • Logiczne: || (lub), && (i), ! (negacja) • Bitowe: ~, & , | , ^ , << , >> , >>> • Operator warunku ? : • Konwersja typu : (typ) • Stwierdzenie typu: instanceof 7 8 Operatory - uwagi (1) Operatory - uwagi (2) • x instanceof Typ_ob - oznacza pytanie czy x jest referencją do obiektu typu Typ_ob; wartość wyraŜenia jest typu boolean • Promocje - w wyraŜeniach arytmetycznych zmienne byte, short, char - przekształcane są do typu int , float - do double , long - do float i double • Konwersje arytmetyczne - rozszerzające - niejawnie, zawęŜające jawnie (za pomocą operatora konwersji) int i; short s; i=s; //rozszerzaj ą ce niejawnie s=i; //bł ą d w kompilacji s= (short) i; //u Ŝ ycie operatora konwersji typu • x = a>b; // x musi by ć typu boolean • x = a>b && c<d; // x musi by ć typu boolean • x+=y; // równowa Ŝ ne x=x+y; • x++ ; // rownowa Ŝ ne x=x+1; • --x ; // równowa Ŝ ne x=x-1; • r=x % y; // reszta z dzielenia całkowitego x/y • max = a > b ? a : b ; // je ś li a>b to max=a, je ś li // nie to max=b • kolejność opracowania argumentów operacji dwuargumentowych: OD LEWEJ DO PRAWEJ 9 10 Obiekty klasy String Instrukcje • Ła ń cuchy - specjalne znaczenie operatorów String s1; String s2="Java"; String s3=new String( " 2 SDK"); s1=s2+" - w1"; // s1="Java – w1" s3=s2+s3; // s3="Java 2 SDK" • Konkatenacja ła ń cuchów i liczb int k=1; s1=k+k+s2; //od lewej do prawej !!!: 2Java s1=s2+k+k; //od lewej do prawej !!!: Java11 Date date=new Date() s1="Data"+date(); //wypisze Data i bieŜą datę • kaŜde wyraŜenie zakończone średnikiem staje się instrukcją a = (x+10)/2; • instrukcje mogą być grupowane w bloki poprzez ujęcie w nawiasy klamrowe if (a>b) { c=a+b; d=a-b; e=a*b; } 11 12 2 Instrukcje steruj ą ce - warunki Instrukcje steruj ą ce - iteracje • if (wyr) ins JeŜeli wyr ma wartość true to wykonywana jest ins JeŜeli wyr=true to wykonywana jest ins1 w przeciwnym razie ins2 • while (wyr) ins Instrukcja ins ( lub blok instrukcji ) wykonywana jest w pętli dopóki wyr jest true • if (wyr) ins1 else ins2 • switch (wyr) { case w1:ins1 case w2:ins2 ... case wn:insn default : ins } Wybór spośród wielu wariantów; wyr musi być wyraŜeniem całkowitym, którego wynik jest porównywany po kolei z całkowitymi wyraŜeniami stałymi w1, w2, ...; jeśli Ŝadne ze stałych wyraŜeń nie pasuje do wyr , wykonywana jest instrukcja po default • do ins while (wyr); Przerwanie pętli następuje gdy wyr przyjmie wartość false • for (wyr1;wyr2;wyr3) ins Wyliczane jest wyr1 , następnie w pętli oblicza się wyr2 i jeśli jego wartość jest true wykonuje się ins i oblicza wyr3 13 14 Pozostałe instrukcje steruj ą ce • continue [etykieta]; Instrukcje steruj ą ce – przykłady (1) instrukcja przerywa wykonanie bieŜącego kroku pętli for, do, while i rozpoczyna wykonanie kroku następnego (lub teŜ kroku oznaczonego etykietą) Instrukcja powoduje przerwanie wykonania pętli; stosowana równieŜ w instrukcji switch Instrukcja powoduje powrót z metody, zwracając wartość wyraŜenia wyr; wyr moŜe być opuszczone jeśli metoda nie zwraca Ŝadnych wartości • if (x>10) {y=x; x=1;} else {y=-x; x=-1;} • x=1; krok=3; while (x<=100) // petla skończona { x+=krok; //zmiana wspolrzednej x a // pozostałe instrukcje } //koniec petli while • while (true) //nieskonczona petla np. animacji { x+=krok; //x=x+krok if (x>maxx) x=1; } //koniec petli while • break [etykieta]; • return wyr; 15 16 Instrukcje steruj ą ce – przykłady (2) Tablice jednowymiarowe • tablica jest obiektem, indeksy tablicy są typu int i zaczynaj ą si ę od 0 • deklaracja tablicy tworzy referencję, nie alokuje pamięci dla samej tablicy int[ ] tab; • uŜycie wyraŜenia new lub inicjalizacja przydziela pamięć t1=new int[10]; int [ ] t2=new int[n]; • rozmiar tablicy moŜe być ustalony dynamicznie w fazie wykonania programu; odwołanie t2.length podaje aktualną liczbę elementów tablicy t2 • int ile=10; for (int i=0;i<ile;i++) //od i=0, dopóki i<ile { i+=5; } //koniec pętli for • int i=0, j=0; do { i++; //i=i+1; j*=i; //j=j*i; if (j==6) break; } while (i<5); //koniec pętli do 17 18 3 Tablice - przykłady Tablice elementów obiektowych • inicjalizowanie elementów tablicy int liczby[ ] = { 1, 2, 3, 4, 5}; • przetwarzanie wszystkich elementów tablicy for ( int i=0 ; i < t2.length ; i++) t2[ i ] = i; • wypisanie argumentów wywołania programu public static void main(String[ ] args) { for ( int i=0 ; i < args.length ; i++) System.out.println(args[i]); • deklaracja tablicy i utworzenie obiektu tablicowego Button[ ] btab = new Button[n]; • elementy tablicy są obiektami wobec czego wymagają tworzenia for ( int i=0 ; i < btab.length ; i++) btab[ i ] = new Button("Przycisk "+i); • inicjalizacja tablicy obiektów Button b[ ] = { new Button("A"), new Button("B"), new Button("C") } ; } 19 20 Tablice wielowymiarowe Operacje we/wy – klawiatura/ekran • elementami tablic wielowymiarowych są tablice, liczba wymiarów określana jest przez liczbę nawiasów [ ] • inicjalizacja w nawiasach klamrowych int [ ] [ ] tab2x3 = { {1, 2, 3}, {4, 5, 6} } ; • dynamicznie int [ ] [ ] tabnxm=new int [n] [m]; • Metody , println zawarte w obiekcie strumieniowym System.out • Strumienie – zarządzają przesyłaniem danych z programu do urządzeń fizycznych (pliki, drukarki, ekrany) • metoda readLine pobiera dane wejściowe z obiektu BufferedReader i zwraca łańcuch ¤ readLine moŜe zgłosić wyjątek IOException (błąd operacji we), który naleŜy „przechwycić” za pomocą konstrukcji try - catch • Długość łańcucha moŜna ustalić za pomocą metody length klasy String 21 22 Przykład 1 – Wy ś wietlanie tekstu na ekranie Przykład 2 – Pobieranie danych z klawiatury import java.io.*; /* czytaj.class - odczytuje tekst z klawiatury, okresla dlugosc linii i wyswietla ja */ class czytaj { public static void main(String[] args) { String linia="";//zmienna do pobierania danych z klawiatury //tworzymy nowy obiekt (bufor) do pobierania danych //z klawiatury (standardowe we, System.in) : BufferedReader we=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Wpisz lancuch: "); //musimy oproznic bufor we - na koncu danych nie ma znaku nowej linii: System.out.flush(); //przechwytujemy ewentualny blad we try{ linia=we.readLine();//pobranie danych z klawiatury } catch (IOException e) {System.out.println(e+". Blad we"); System.exit(1);} System.out.println("Wpisales: \""+linia+"\""); System.out.println("Dlugosc linii: "+linia.length()); }} /* konwert.class - podaje wybrane konwersje jednostek */ class konwert { public static void main(String[] args) { double mi_na_km=1.609; double kg_na_lbs=2.2; System.out.print("1 mila to:\t"); System.out.print(mi_na_km); System.out.println(" kilometrow"); //Lancuchy mozna łaczyc za pomoca operatora + System.out.println("1 kg to:\t"+kg_na_lbs+" funtow"); } } 23 24 4 Konwersja ła ń cuchów w liczby Przykład 3 – Konwersja ła ń cuchów w liczby import java.io.*; /* napiwek.class - oblicza napiwek na podstawie sumy rachunku i procentu napiwku */ class napiwek { public static void main(String[] args) { String linia=""; //zmienna do pobierania danych z klawiatury double rach=0,napiwek=0; int procent=0; BufferedReader we=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Wpisz sume rachunku: "); System.out.flush(); try{ • Metoda valueOf(È) klasy Double , Integer, String , przeprowadza odpowiednie konwersje: String double Double.valueOf(String).doubleValue(); String int Integer.valueOf(String).intValue(); int String String.valueOf(int); //nie zgłasza wyjątków linia=we.readLine();//pobranie danych z klawiatury } catch (IOException e) {System.out.println(e+". Blad we"); System.exit(1);} 25 26 Przykład 3 c.d. Dost ę p do argumentów linii polece ń //przeksztalcamy lancuch w liczbe double: rach=Double.valueOf(linia).doubleValue(); • Argumenty linii poleceń są przekazywane metodzie main jako tablica łańcuchów • Liczbę argumentów moŜna określić metodą length • Argumenty przekształca się w liczby poprzednio podanymi technikami • Wywołanie takiego programu (klasy): java nazwa_klasy param1 param2 È System.out.print("Wpisz procent napiwku: "); System.out.flush(); try{ linia=we.readLine();//pobranie danych z klawiatury } catch (IOException e) {System.out.println(e+". Blad we"); System.exit(1);} //przeksztalcamy lancuch w liczbe int: procent=Integer.valueOf(linia).intValue(); napiwek=rach*((double)procent/100.0); System.out.println("Rachunek wraz z napiwkiem: "+ ( rach+napiwek ) ); // konieczne nawiasy!!! }} 27 28 Przykład 4 - argumenty w linii polece ń Funkcje matematyczne - klasa Math /* parametry.class - pobiera miesiac i rok z linii polecen (2 parametry); wywolanie: java parametry <mc> <rok> */ class parametry { public static void main(String args[]) { if (args.length!=2) { System.out.println("Wywolanie: java parametry <mc> <rok>"); System.exit(1); } //args[0] jest pierwszym argumentem <mc> int mc=Integer.valueOf(args[0]).intValue(); //args[1] jest drugim argumentem <rok> int rok=Integer.valueOf(args[1]).intValue(); if (mc<1 || mc>12) {System.out.println("Zly miesiac");System.exit(1);} if (rok<0) { System.out.println("Zly rok"); System.exit(1); } System.out.println("Miesiac: "+mc+" rok: "+rok); }} Metoda: Opis: abs(x) (x) warto ść bezwzgl ę dna x sqrt(x) (x) pierwiastek kwadratowy z x pow(x,y) (x,y) x do pot ę gi y exp(x) (x) liczba e do pot ę gi x log(x) logarytm naturalny z x min(x,y) mniejsza z liczb x, y max(x,y) wi ę ksza z liczb x,y sin(x), cos(x), tan(x) sin(x), cos(x), tan(x) asin asin(x), (x), acos acos(x), (x), atan atan(x) (x) 29 30 5 abs sqrt pow exp max(x,y) sin(x), cos(x), tan(x) asin (x), acos (x), atan (x) [ Pobierz całość w formacie PDF ] |