[ Pobierz całość w formacie PDF ]
.Jeœli ¿adna z fraz catch instrukcji try nie jest w stanie odebraæ wyj¹tku, tojest on wysy³any do najwê¿szej dynamicznie, obejmuj¹cej j¹, instrukcji try.Jeœli takiej nie ma, to domyœlnie nastêpuje zakoñczenie wykonywania programu.Uwaga: Jeœli wyst¹pienie sytuacji wyj¹tkowej spowoduje zaniechanie dalszegowykonywania jakiegokolwiek bloku programu, to nast¹pi niejawne zniszczeniewszystkich jeszcze nie zniszczonych jego zmiennych lokalnych.Na przyk³adimport java.io.IOException;publicclass Master {public static void main(String args[])throws IOException{String str = fun("Hello");//.System.in.read();}static String fun(String str){try {int fix = 12;//.return getStr(str);}catch(OutOfMemoryError e) {System.out.println("Buy more RAM!");System.exit(0);return null; // wymagane!}}static String getStr(String str)throws OutOfMemoryError{String strRef;try {strRef = new String(str);System.out.println(strRef.charAt(0));}catch(NullPointerException e) {System.exit(1);return null;}return strRef;}}Jeœli podczas wykonywania instrukcjistrRef = new String(str);zosta³by wys³any wyj¹tek klasy OutOfMemoryError, to poniewa¿ nie móg³by zostaæodebrany przez frazêcatch(NullPointerException e)wchodz¹c¹ w sk³ad instrukcji try funkcji getStr, wiêc zosta³by wys³any dodynamicznie obejmuj¹cej j¹ instrukcji try funkcji fun, gdzie zosta³byprzechwycony przez frazêcatch(OutOfMemoryError e)Nale¿y zwróciæ uwagê, ¿e tu¿ po rozpatrzeniu fraz catch instrukcji trynale¿¹cej do funkcji getStr zostanie zniszczona zmienna strRef, a tu¿ przedrozpatrzeniem fraz catch instrukcji try nale¿¹cej do funkcji fun zostaniezniszczona zmienna fix.________________________________________________________________________________________TabliceTablica jest wektorem elementów, z których ka¿dy jest takiego samego typu.Elementami tablicy mog¹ byæ tylko zmienne typu podstawowego oraz odnoœniki dotablic i obiektów.Z ka¿dym elementem tablicy jest zwi¹zany indeks, okreœlaj¹cy pozycjê elementu wobrêbie tablicy.Indeks pierwszego elementu ma wartoœæ 0.Przetwarzanie elementów tablicy odbywa siê za poœrednictwem odnoœnikaidentyfikuj¹cego tablicê.Jeœli nazw¹ odnoœnika jest ref, to wyra¿enieref[exp]w którym exp jest wyra¿eniem ca³kowitym, jest nazw¹ elementu o indeksie równymwartoœci wyra¿enia exp, zaœ wyra¿enieref.lengthjest nazw¹ zmiennej o wartoœci równej liczbie elementów tablicy.Elementy podstawoweJeœli Type jest nazw¹ typu podstawowego (np."int" albo "double"), todeklaracjaType ref[]oznajmia, ¿e ref jest odnoœnikiem do wektora elementów typu podstawowego, zktórych ka¿dy jest typu "Type".Podczas opracowania takiej deklaracji, odnoœnikowi ref jest przypisywaneodniesienie puste.Odniesienie niepuste mo¿na przypisaæ na dwa sposoby: albo zapomoc¹ takiego inicjatora jak= { 10, 20, 30 }okreœlaj¹cego wartoœci elementów, na przyk³adint vec[] = { 10, 20, 30 };albo za pomoc¹ wyra¿enia fabrykuj¹cegonew Type [size]dostarczaj¹cego odnoœnik do size-elementowego wektora, którego elementy maj¹wartoœci 0, na przyk³adnew int [width * height]A zatem, wykonanie nastêpuj¹cej instrukcjiint arr[] = { 10, 20, 30 };mo¿e byæ zast¹pione wykonaniem instrukcjiint arr[];arr = new int [3];for(int i = 0; i < arr.length ; i++)arr[i] = 10 * (i+1);Przyk³ad Sumowanie elementówimport java.io.IOException;publicclass Master {public static void main(String args[])throws IOException{int vec[] = { 10, 20, 30 };int sum = 0;for(int i = 0; i < vec.length ; i++)sum = sum + vec[i];System.out.println("Sum = " + sum);System.in.read();}}Wykonanie programu powoduje wyprowadzenie napisuSum = 60Elementy odnoœnikoweJeœli Type jest nazw¹ typu odnoœnikowego (np."String" albo "StringBuffer"), todeklaracjaType ref[]oznajmia, ¿e ref jest odnoœnikiem do wektora odnoœników, z których ka¿dy jesttypu "Type".Podczas opracowania takiej deklaracji, odnoœnikowi ref jest przypisywaneodniesienie puste.Odniesienie niepuste mo¿na przypisaæ na dwa sposoby: albo zapomoc¹ takiego inicjatora klamrowego jak= { "Hello", "World" }okreœlaj¹cego wartoœci elementów, na przyk³adString vec[] = { "Hello", "World" };albo za pomoc¹ wyra¿enia fabrykuj¹cegonew Type [size]dostarczaj¹cego odnoœnik do size-elementowego wektora, którego elementy maj¹wartoœci null, na przyk³adnew String [rows * cols]A zatem, wykonanie nastêpuj¹cej instrukcjiString arr[] = { "Hello", "World" };mo¿e byæ zast¹pione wykonaniem instrukcjiString arr[];arr = new String [2];arr[0] = "Hello";arr[1] = "World";Przyk³ad Wyznaczenie œredniej argumentówimport java.io.IOException;publicclass Master {public static void main(String args[])throws IOException, NumberFormatException{if(args.length == 0)System.out.println("Please supply arguments");System.in.read();return;}int sum = 0, count = args.length;for(int i = 0; i < count ; i++) {String arg = args[i];int val = Integer.parseInt(arg);sum = sum + val;}System.out.println(sum / count);System.in.read();System.exit(0);}}Jeœli program Master zostanie wywo³any za pomoc¹ poleceniaMaster 10 20 30to wykonanie programu spowoduje wyprowadzenie liczby 20.Wykonanie instrukcjiString arg = args[i];powoduje przypisanie odnoœnikowi arg odniesienia do obiektu ³añcuchowegozainicjowanego kolejnym argumentem programu.Wykonanie instrukcjiint val = Integer
[ Pobierz całość w formacie PDF ]