w2_java.pdf

(174 KB) Pobierz
w2_java
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
27932540.027.png 27932540.028.png 27932540.029.png 27932540.030.png 27932540.001.png 27932540.002.png
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
27932540.003.png 27932540.004.png 27932540.005.png 27932540.006.png 27932540.007.png 27932540.008.png
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
27932540.009.png 27932540.010.png 27932540.011.png 27932540.012.png 27932540.013.png 27932540.014.png
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 print , 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
27932540.015.png 27932540.016.png 27932540.017.png 27932540.018.png 27932540.019.png 27932540.020.png
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)
27932540.021.png 27932540.022.png 27932540.023.png 27932540.024.png 27932540.025.png 27932540.026.png
Zgłoś jeśli naruszono regulamin