Java - przegląd składni (2)
Kometarze
/* tak samo jak w C, znaki komentarza nie podlegają zagnieżdżaniu */
// komentarz do końca linii
/** komentarz typu „doc". Może być używany do generowania dokumentacji, ale może wystąpić tylko przed deklaracją. */
Typy podstawowe l
byte wartość 8-bitowa ze znakiem
short wartość 16-bitowa ze znakiem
int wartość 32-bitowa ze znakiem
long wartość 64-bitowa ze znakiem
boolean przyjmuje wartość logiczną true lub false. Nie można ich konwertować do innych typów prostych
char kod znaków w 16-bitowym kodzie Uniccode
float wartość zmienno-przecinkowa 32-bitowa
double wartość zmienno-przecinkowa 64-bitowa
Przykłady deklaracji
int numer;
double liczba:
char znak;
boolean prawda_czy_fałsz;
Nazwy zmiennych muszą się zaczynać od litery lub znaku „_" (podkreślenie) lub „$';
Ogólna składnia
NazwaTypu NazwaZmiennej [=Wartość początkowa];
Tablice
Tablice są niemal identyczne jak w C
Java nie pozwala na umieszczanie ich na stosie
Pamięć jest przydzielana jest dynamicznie
Wszystkie tablice są obiektami
Deklaracje tablicy
Jednowymiarowa tablica int
int numners[] = new int[10];
int[] numners = new int[10];
Dwuwymiarowa tablica int
int matrix[][] = new int[5][10];
int [][] matrix = new int[5][10];
Jawne inicjowanie tablicy
int numbers[]= {O, l ,2,3};
mtmmibereDD={{0,l},{2,3},{4,5}};
Metoda zwracająca tablice
int[] metodaTabO {return new int[10];j
lub
int metodaTab() [JJreturn new int[10];}
Tablica dwuwymiarowa o dowolnej liczbie kolumn
char[][] list = new char[14][];
Inicjacja wierszy przed zapisaniem danych
lista[0] = newchar[3];
Wpisanie danych do wiersza
lista[0][0] = T; lista[0][l] = 'g'; lista[0][2] = 'c';
Sprawdzenie długości tablicy
Odczyt liczby kolumn liczba.length -> 14
Odczyt liczby wierszy liczba[0].lenght -> 3
Próba odwołania do niezainicjowanego wiersz.Zostaje wygenerowany wyjątek: NullPointerException
Operatory l
Większość operatorów zostało zaczerpnięte z C i C++
Dla operatorów '&', 'f,<A' (XOR)
argumenty— liczby: operatory bitowe,
argumenty- logika: operator logiczny
Wprowadzono nowy operator '>>>' - przesunięcie bitowe w prawo z uzupełnieniem zerami
dane - przesunięcie
dane - zmienna na której jest wykonywana
operacja przesunięcie -ile pozycji nastijpi przesunięcie
Java nie używa operatora `, ` do budowy złożonych wyrażeń,
Wyjątek stanowi instrukcja „for",
for (i=0j=0;i<10 && j<20; i++j++){ //instrukcje }
Instrukcje
Zbiór instrukcji Java wzorowany był na zbiorze C
Instrukcja przypisania,
Instrukcje warunkowe if i switch,
Instrukcje iteracyjne for, wliile i do,
Instrukcje sterujące: continue, breake,
Blok - ciąg instrukcji {...}
Instrukcje if.. else
Działa tak jak w C w warunku musi być wyrażenie logiczne false lub true
if (wyrażenia_logiczne) inst
else instrukcje;
Instrukcje switch
Działa identycznie jak w C.
switch (wyrażenia_warunkowe)
{ case stała: instrukcja
[break;]
...
[default: instrukcja] }
Pętla while i do .. while
Działają identycznie jak w C.
while (wyrażenie_logiczne) {instrukcje}
do {instrukcje}
while (wyrażenie_logiczne)
Pętla for
Działa tak jak w C, ale w Java możemy deklarować zmienne w pętli
Zmienna jest widoczna jedynie w tej pętli
Składnia:
for (wyrażeniel; wyrażenie_logiczne; wyrażenie3) instrukcja;
Blok instrukcji {...}
Jest to instrukcja złożona składająca się z ciągu instrukcji objętych klamrami {}
Zmienne zadeklarowane w bloku są widziane tylko w nim
Etykiety- etykieta i breake, continue
Instrukcja continue powoduje przejście do następnej iteracji pętli
Gdy continue ma etykietę to sterowanie przekazane jest do nawiasu otwierającego blok instrukcji oznaczonego etykietą.
Klasy
Klasy są podstawowymi elementami pozwalającymi w Java definiować nowe typy danych.
Klasa jest ogólnym szkieletem zawierającym dane i niezbędne operacje na tych danych
Klasy - ogólna struktura
[modyfikatory] classNazwaKlasy [extends NazwaNadklasy]
[implements Nazwylnterfejsów]
{ // Ciato klasy:
// Definicje pól danych , metod
// KJasy wewnętrzne }
Klasy - modyfikatory
Modyfikatory deklarują rodzaj klasy:
public - może być używany przez kod, który nie wchodzi w skład pakietu związanego z tą klasą. W jednym pliku może być zadeklarowany tylko jedna taka klasa a plik musi mieć nazwę <Nazwa Klasy>.java
final - nie może posiadać podklas; nie może dziedziczyć. Wszystkie metody i pola klasy nie mogą być przesłonięte.
private - dostęp do metod i pól danych posiadają tylko inne metody tej samej klasy.
abstrakt - zawiera metody niezaimplementowane - abstrakcyjne.
(brak) - klasa jest dostępna w obrębie pakietu, w którym występuje.
Klasy - pola danych
Jest to atrybut klasy podobnym do zmiennej lub stałej
Zalecana notacja „m_nazwa"
Składnia:
modyfikatoryPola typPola NazwaPola;
Klasy - metody
Są to moduły w klasie przypominające funkcje.
Składnia:
[modyfikatory] TypRezultatu NazwaMctody
(ListaParametrów)
{ //Treść metody }
Klasy - metody i pola - modyfikatory
public - wszystkie klasy mają dostęp do pól danych i metod
private - dostep do metod i pól danych tylko przez klasy tej samej klasy
protected - dostep do pól przez metody swojej klasy i klasy potomnych
final - metoda nie może być przesłana
static - metody i pola wspólne dla wszystkich obiektów tej klasy (dostep do pól: <klasa>.pole , dostęp do metod <klasa>.metoda())
brak - metoda pola dostępna w pojedynczym pakiecie
synchronized - metoda na początku wykonywania zablokuje dostep do obiektu i zwolni go gdy się zakończy. Gdy obiekt był wcześniej zablokowany to oczekuje na jego zwolnienie.
native - metoda zaimplementowana w języku innym niż Java.
Klasy-obiekty
Są to moduły generowane automatycznie na podstawie szablonu jakim jest klasa.
Na podstawie jednej klasy możemy zdefiniować wiele obiektów
Na potrzeby obiektów tworzone są zmienne obiektowe, które są podobne do zmiennych klas.
Klasy - obiekty - deklaracja zmiennych obiektowych
Składnia:
NazwaTypu NazwaZmiennej
[=WartośćPoczątkowa]
Przykład: Konstruktor
Data dzis = new Data();
Date dzis = new Date(1997, 9, 25);
Klasy - obiekty - dostęp do obiektów
Składnia:
NazwaZmiennejObiektowej.NazwaAtrybutu;
gdzie:
NazwaZmiennejObiektowej - nazwa obiektu
NazwaAtrybutu - nazwa pola danych lub metody.
Klasy - konstruktory
Zadaniem konstruktora jest zainicjowanie obiektu
Jest to metoda o nazwie takiej jak klasa
Każda klasa może mieć wiele konstruktorów różniących się liczbą argumentów
Ponieważ każda klasa dziedziczy po klasie Object, wice dziedziczy również konstruktor bezparametrowy
Punkt pkt = new Punkt(); //Używamy domyślnego konstruktora
Jawna deklaracja (konstruktory)
public class Punkt {
public int m_nX:
public int m_nY;
public Punkt(){
m_nX=10;
m_nY=I0;}
public Punkt(int X, int Y){
m_nX=X;
m_nY=Y;
} // konstruktor
}
Klasy - dziedziczenie
Java dziedziczy od nadklasy pola i metody
W Javie klasa po której dziedziczy klasa potomna występuje po słowie extends
Przykład:
class Miejsce extends Punkt} String m_Nazwa;
public Miejsce(int X, int Y, String nazwa) { //Ciało metody
}
Klasy - pakiety
Są to zbiory klas stanowiące biblioteki
Różne firmy dostarczają swoje biblioteki
Możemy tworzyć własne pakiety przy pomocy słowa package
Definiujemy klasy publiczne i zapisujemy je w pliku o tej samej nazwie
NazwaKlasyPublicznej.java
Oprócz klasy publicznej w pliku może się znajdować definicja innych klas
Poszczególne klasy zapisujemy do pliku
package moj.pakiet
public class Klasa l {
//definicja pól i metod klasy Klasa l
}
//ewentualna definicja innych klas
Tak przygotowane pliki kompilujemy
NazwaKlasy.class
Klasy powinny się znieść w katalogu np.
c:\java\classes\moj\pakiet
Zmienna CLASSPATH=C:\java\classes;
Klasy - użycie pakietu
Trzeba importować pakiet
import mój.pakiet
Użycie w programie
Klasal k = Klasal();
Aby zaimportować wszystkie klasy
import mój.*