Java podstawy

Transkrypt

Java podstawy
2016-03-10
Języki Programowania II
Wykład 3
Java podstawy
Przypomnienie
• Analiza, projektowanie, programowanie, testowanie,
wdrażanie
– Iteracyjnie nie kaskadowo
• Przypadki użycia = opowiastki o używaniu
systemu = wymagania w kontekście
• UML
– Tylko notacja
– Pozwala się komunikować
• Myślenie obiektowe
– Mniejsza luka reprezentacji
– Łatwiej zapanować nad złożonością
Przypomnienie c.d.
• Program = zbiór obiektów
• Obiekty łączą stan i zachowanie
• Obiekty zlecają sobie nawzajem pewne
odpowiedzialności
1
2016-03-10
Co dalej
• Wprowadzenie do Javy
– Podstawowe konstrukcje języka
– Uruchamianie programów
– JVM, JRE, JDK, ...
Język Java
•
•
•
•
•
Wysokopoziomowy
Kompilowalny
Obiektowy
Z silną kontrolą typów
Składnia wzorowana na C/C++
– Bezpieczniejszy
– Przenośny
– “write once run anywhere” vs “write once debug everywhere”
– "compile once, run anywhere” vs "write once, compile anywhere”
Bajtkod
• Kompilator nie generuje kodu maszynowego, ale kod
pośredni (bajtkod)
• Bajtkod wykonuje maszyna wirtualna Javy (Java
Virtual Machine JVM)
• Obecnie również inne języki (Scala, Python, Groovy,
Ruby, Ada, PHP, ...
• JMV + standard class libraries = JRE
– JRE to Java Runtime Environment
– Standardowe biblioteki implementują Java API (Application
Programming Interface)
• Java SE 7 (SE, ME, EE)
2
2016-03-10
Witaj Świecie
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");}
}
• Definicja klasy
• Modyfikatory dostępu
• Definicja metody
• – Typ zwrotny
• – Lista parametrów (rozdzielana przecinkiem, najpierw typ potem nazwa)
• – Ciało
• Składowe klasowe vs egzemplarza
• Wywołanie metody
Uruchamianie
• Klasa publiczna musi być w pliku o tej samej nazwie
– Tylko jedna klasa publiczna w pliku
• W IDE
– Shift+F6 vs F6
– Ctrl+Shift+F5 vs Ctrl+F5
– Ctrl+spacja
– Alt+Shift+F
• Z konsoli
– javac
– java
Komentarze
• Jednowierszowe
// To jest komentarz jednowierszowy
• Wielowierszowe
/* To jest
komentarz
wielowierszowy */
/* A */ /* to */ /* kilka */ /* takich */ /* komentarzy */
/* To jest komentarz /* to nadal jest komentarz */
a_to_już_nie */
3
2016-03-10
Identyfikatory
• Zaczynają się od litery a potem litery lub cyfry
– Znak "_" jest traktowany jako litera
– Znak "$” też ale jest zarezerwowany
• Programy w Javie to napisy w UniCode
– identyfikatory mogą zawierać znaki narodowe (w tym polskie)
• Nie ma ograniczenia na długość identyfikatorów
• Identyfikatory nie mogą być słowami kluczowymi
Javy ani literałami true, false i null
Słowa kluczowe
abstract
assert
boolean
break
byte
this
catch
char
class
const
continue
default
do
double
else
case
extends
final
finally
float
for
if
goto
throw
import
enum
int
try
long
native
new
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
instanceof
implements
throws
transient
interface
void
volatile
while
Literały
• liczby całkowite (np. 13 czy -2627)
– dziesiętne, szesnastkowe (0xC) lub ósemkowe (np. 015),
• liczby rzeczywiste (np. 1.0 czy -4.9e12)
– mogą być dziesiętne, szesnastkowe lub binarne
• literały logiczne false i true
• literały znakowe (np. 'a' czy '\n')
• literały napisowe (np. "Ala ma kota")
– klasa String a nie typ pierwotny
• literały tablicowe
• literał null
4
2016-03-10
Operatory
•
•
•
•
•
•
•
•
•
•
•
•
•
Postfix: expr++ expr-Unary: ++expr --expr +expr -expr ~ !
Multiplicative * / %
Additive + Shift << >> >>>
Relational < > <= >= instanceof
Equality == !=
Bitwise AND &
Bitwise OR |
Logical AND &&
Logical OR ||
Ternary ? :
Assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=
Typy
• Każda zmienna, atrybut, parametr ma zadeklarowany typ
• Kompilator sprawdza czy typy wyrażeń się zgadzają
• Typy pierwotne
– boolean
– byte, short, int, long, char
– float, double
• Typy referencyjne
– Klasy
– Interfejsy
– Tablice
• Obiekty = egzemplarze klas lub tablice
Zmienne
•
•
•
•
•
•
•
zmienne klasowe
zmienne egzemplarzowe
zmienne lokalne
elementy tablic (te zmienne są anonimowe)
parametry metod
parametry konstruktorów
parametry obsługi wyjątków
Dla zmiennych lokalnych trzeba samemu zainicjować przed
użyciem!
5
2016-03-10
Instrukcje
• instruckja pusta
;
• instrukcja deklaracji zmiennej lokalnej
int j = 13;
int[] tab = new int[10];
• instrukacja etykietowana
koniec: return 0;
• instrukcja wyrażeniowa
i = 0;
o.wypisz(i);
• instrukcja warunkowa
if (i > 0) i--;
if (i > j) max = i; else max = j;
Instrukcje c.d.
• instrukcja asercji
assert i>0;
assert i>=0: "i (" + i + ") mniejsze od zera";
• instrukcja wyboru
switch (i){
default: System.out.println("Wartość spoza zakresu"); break;
// Tak, nie musi być ostatnia!
case 1: case 2: System.out.println("Dodatnie"); break;
case -1: case -2: System.out.println("Ujemne"); break;
case 0: System.out.println("Zero"); break;
}
• pętla dopóki
while (i>0) i--;
Instrukcje c.d.
• pętla wykonuj
do i++ while ( i < 0 );
• pętla dla (wersja podstawowa)
for(int j = 0; j<tab.length; j++) tab[j] =
0;
• pętla dla (wersja rozszerzona)
for(int elt: tab) System.out.print(elt+", ");
• instrukcja break
break;
break dalej;
• instrukcja continue
continue;
continue dalej;
• instrukcja powrotu
return;
return 0;
6
2016-03-10
Instrukcje c.d.
• instrukcja zgłoszenia wyjątku
throw new Wyjątek();
• instrukcja synchronizująca (zagadnienia współbieżności pomijamy)
• instrukcja try
try{
i = j/k;
} catch (Exception e) {
System.out.println("Dzielenie przez zero");
} finally {
System.out.println("Kończymy");
}
• instrukcja bloku (umożliwia deklarowanie zmiennych lokalnych, a także
klas lokalnych), np.
{
int i = 1;
i++;
int j = i + 1;
return i+j;
}
Przykład Klasy
Co dalej….?
• Zapoznać się z przedstawionymi typami
instrukcji i przykładami
• Lista 2
Następne zajęcia:
• Pakiety, tablice, przeciążanie metod,
kapsułkowanie, inicjalizacja
7

Podobne dokumenty