Powyższy program (Srednia.java) oblicza wartość średnią elementów tablicy, zadanych w programie. Przedstawiono w nim in.in. technikę pobierania danych z klawiatury oraz zamianę łańcucha na liczbę. Dane wprowadzane są typu rzeczywistego (double).
Do pobierania danych z klawiatury stworzono metodę czytaj, w której użyto klasy BufferedRaader zawierającej metodę readLine, która pobiera dane wejściowe z obiektu BufferedReader i zwraca łańcuch. W tym celu zaimportowano klasy z pakietu java.io (tam znajduje się BufferedReader). W metodzie czytaj należało stworzyć nowy obiekt BufferedReader, który dostarcz}' dane z klawiatury. W tym celu wywołano konstruktor BufferedReader z argumentem System.in (standardowe wejście). Aby przeczytać dane wymuszono opróżnienie bufora wejściowego metdą System.out.Jlush. Metoda readLine może zgłosić wyjątek IOException (wejścia-wyjścia). więc użyto pętli do-while z blokiem try-catch, aby go przechwycić. Metoda readLine zwraca łańcuch, który jest przypisany zmiennej input typu String.
Kolejnym etapem jest przekształcenie łańcucha w liczbę - w tym przypadku double. Konwersję przeprowadza się metodą valueOf zawartej w klasie Double. Klasa ta pozwala na umieszczenie typu podstawowego w obiekcie. Obiekt Double zawiera tylko jedno pole typu double. Klasa ta zawiera także kilka metod do przekształcania obiektów Double w typ String. Jak wspomniano w artość zmiennej input przekształcana jest w typ double za pomocą metody Double.valueOf(String).doubleValue(). Metoda ta może zgłosić wyjątek NumberFormalExceplion .jeśli łańcuch wejściowy jest źle sformatowany. Dzięki zastosowaniu pętli do-while z blokiem try-catch wyjątek ten jest przechwytyw any.
Uwagi:
Zmienne odnośnikowe.
• Zmienne typów odnośnikowych (referencyjnych) deklaruje się jak w przypadku zmiennych typów' podstawowych:
Typ zmiennej nazwazmiennej 1, nazwa zmiennej2;
Pisząc w ten sposób deklaruje się jedynie odniesienie do zmiennej obiektowej, a nie samą zmienną! Takiemu odniesieniu przypisana jest wartość pusta (nuli). W związku z tym nie można jej wykorzystać w żadnej operacji. Dopiero po utworzeniu odpowiedniego obiektu w pamięci można powiązać go z tak zadeklarowaną zmienną. Jeśli deklaruje się zmienną typu całkowitego: int a: można jej przypisać wartość np. 10. Żeby móc skorzystać z tablicy należy zadeklarować zmienną odnośnikowa typu tablicowego, utworzyć nowy obiekt tablicy i powiązać go za zmienną. Dopiero wtedy można swobodnie odwoływać się do kolejnych elementów. Pisząc: int tablicafj; deklaruje się odniesienie do tablicy, która będzie zawierała elementy typu np. int. Samej tablicy jednak wcale jeszcze nie ma. Aby stworzyć nową. jednowymiarowa tablicę lici) typu int o rozmiarze np. 10 elementów i przypisać ją zmiennej odnośnikowej o nazwie tablica należy użyć wyrażenie:
int tablica = new int[10];
Po tej deklaracji można się odwoływać do kolejnych elementów tej tablicy: tablica [index]
• Elementy' tablicy są numerowane od zera, a nie od 1!. Oznacza to, że pierwszy element tablicy n-elementowej ma indeks 0, a ostatni (n-1).
• Rozmiar tablicy może być ustalony dynamicznie w fazie wykonywania programu
• Zawsze można uzyskać informacje o rozmiarze (liczbie elementów) za pomocą odwołania tablica.length;
• Deklarując: Button b;
Zmiennej b przypisujemy odniesienie (referencję) do obiektu typu Button. ale zmienna nie wskazuje na razie na żaden obiekt. Dopiero użycie wyrażenia new:
b = new Button();
tworzy obiekt, a zwrócona przez new' referencja jest podstaw iana za zmienną b.
W deklaracjach zmiennych ty pu odnośnikowego można inicjować dane. np.: int tablica[] = new int[100];
Button b = new Button;
But ton [] btab = new Button[n]
String s = “ala ma kota ";
Ostatni przykład pokazuje, że w Javie dopuszczalne są literały łańcuchowe, których użycie powoduje zbudowanie obiektu typu String i zwrot referencji do niego. Zmienna s zostaje zainicjowana referencją do automatycznie utworzonego obiektu typu String, który zawiera napis ..ala ma kota":