Java test 2 Java test 2 Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? public class A { public static int i; { i++; System.out.print(i); } public static void main(String[] args) { System.out.print(A.i); } } Po kompilacji i wykonaniu metody main na ekranie pojawi się: 12 Po kompilacji i wykonaniu metody main na ekranie pojawi się: 01 Po kompilacji i wykonaniu metody main na ekranie pojawi się: 0 Jego kompilacja nie powiedzie się (kod wykonywalny może pojawić się jedynie w ciele metody) None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie źródłowym Java 1.8 (zamieszczonym w 2 różnych plikach)? package inny; import pakiecik.*; public class A implements I{ @Override void m(int i){ } } package pakiecik; public interface I { void m(int i); } Jego kompilacja powiedzie się Jego kompilacja zakończy się błędem (błędnie zadeklarowany import w klasie A) Jego kompilacja zakończy się błędem (metoda m() w klasie A powinna być publiczna) Jego kompilacja zakończy się błędem (interfejs I dostarcza metody m() z dostępem pakietowym, a ponieważ klasa A jest z innego pakietu mamy tu niezgodność) None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie (przy założeniu, że odpowiednie importy zostały wykonane)? interface I extends Remote { void m() throws RemoteException; // 1 } class MI implements I { public void m() { System.out.println("m()");} } class A { public static void main(String[] args) { Registry reg; String nazwa = "MI"; try { reg = LocateRegistry.createRegistry(2000); MI mi = new MI(); reg.rebind(nazwa, mi); // 2 } catch (RemoteException e) { e.printStackTrace();} }} Po kompilacji i uruchomieniu program natychmiast zakończy działanie Podczas kompilacji wystąpi błąd w linii 2 Po kompilacji i uruchomieniu program będzie oczekiwał na przychodzące żądania Podczas kompilacji wystąpi błąd w linii 1 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; public class A{ public static void main(String[] args){ Integer[] ti = {3,1,2}; ArrayList al = new ArrayList(Arrays.asList(ti)); al.sort((a1, a2) -> a2-a1); Collections.sort(al,(a1, a2) -> a1-a2); System.out.println(al); } } Jego kompilacja powiedzie się, a po uruchomieniu metody main na ekranie pojawi się [1, 2, 3] Jego kompilacja powiedzie się, a po uruchomieniu metody main na ekranie pojawi się [3, 2, 1] Jego kompilacja zakończy się błędem (zły parametr konstruktora ArrayList) Jego kompilacja zakończy się błędem (złe parametry metody sort) None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? Integer i = 65536; // 1 Long l = (long) 0; // 2 Float f = new Float("20"); // 3 Double d = 40; // 4 Niepoprawna deklaracja w linii 3 Niepoprawna deklaracja w linii 1 Niepoprawna deklaracja w linii 2 Niepoprawna deklaracja w linii 4 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? int i,j = 0; et2: for(i =0; i<3; i++){ et1: do { j++; System.out.print(i+ " " + j + ","); if (i%2 ==0) continue et2; else break et1; } while (j<3); j=0; } Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 0 1,1 2,2 1, Podczas jego kompilacji wystąpi błąd Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 0 1,1 2,2 3, Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 0 1,1 2,2 4, None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? class B extends A {} public class A { public static void n(A[] a){} // 1 public static void main(String[] args) { B[] aB = new B[2]; A[] aA = new A[2]; n(aB); // 2 n(aA); // 3 } } Jego kompilacja zakończy się błędem w linii 2 Jego kompilacja i uruchomienie metody main powiedzie się Jego kompilacja zakończy się błędem w linii 1 Jego kompilacja zakończy się błędem w linii 3 None Poprawna odpowiedź Niech klasy A i B będą zdefiniowane w jednym pliku jak niżej. Co można o nich powiedzieć? public abstract class A { A(){ m();} // 1 public abstract void m(); public static void main(String... args){ A a = new B(); // 2 } } class B extends A{ void m(){ // 3 System.out.println("B.m()");} } Po kompilacji i uruchomieniu metody main klasy A na ekranie pojawi się B.m() Wystąpi błąd kompilacji w linii 1 Wystąpi błąd kompilacji w linii 3 Wystąpi błąd kompilacji w linii 2 None Poprawna odpowiedź Niech klasa A będzie zdefiniowana jak niżej. Co można o niej powiedzieć (zakładając, że wszystkie konieczne importy zostały wykonane)? class A { public class B { private int i; } public static void main(String[] args) { Socket so; try { so = new Socket("192.168.1.200", 2000); // 1 ObjectInputStream out = new ObjectInputStream(so.getInputStream()); B b = (B) out.readObject(); // 2 System.out.println(b.i); // 3 } catch (Exception e) {} } } Jej kompilacja zakończy się błędem w linii 2 Jej kompilacja powiedzie się Jej kompilacja zakończy się błędem w linii 1 Jej kompilacja zakończy się błędem w linii 3 None Poprawna odpowiedź Co można powiedzieć o źródłach kodu interfejsu I oraz klasy A (zapisanych w różnych plikach)? package pakiecik; public interface I { void m(int i); } import pakiecik.I; public class A implements I { public static void main(String[] args) { A.m(1); // 1 } public static void m(int i) { // 2 } } Po poprawnej kompilacji próba uruchomienia metody main zakończy się wyrzuceniem wyjątku Wystąpi błąd kompilacji w linii 2 (niepotrzebne słówko static) Wystąpi błąd kompilacji w linii 1 (wywołanie metody instancyjnej bez utworzenia obiektu) Po poprawnej kompilacji metoda main zadziała poprawnie None Poprawna odpowiedź Co będzie wynikiem wykonania poniższego kodu? URL obj = new URL("http://www.pwr.edu.pl/index.dhtml"); System.out.print(obj.getHost()); 156.17.193.247 www.pwr.edu.pl http://www.pwr.edu.pl/index.dhtml pwr.edu.pl None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? Integer i,j; j = new Integer(20); // 1 i = j; j ++; // 2 System.out.println(i); Jego kompilacja zakończy się błędem w linii 1 Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 20 Jego kompilacja zakończy się błędem w linii 2 Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 21 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? JButton btnNewButton = new JButton("AAA"); Jest to niepoprawna deklaracja przycisku Jest to deklaracja przycisku, na którym pojawi się napis <font color=red>AAA</font> Jest to deklaracja przycisku, na którym pojawi się napis AAA Jest to deklaracja przycisku, na którym pojawi się napis AAA None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie (zakładając, że wykonano wszystkie konieczne importy)? import java.util.*; class B extends A {} public class A { static void n(Collection a){} //1 public static void main(String[] args) { Collection cB = new LinkedList(); Collection cA = new LinkedList(); n(cB); // 2 n(cA); // 3 } } Jego kompilacja zakończy się błędem w linii 3 Jego kompilacja zakończy się błędem w linii 1 Jego kompilacja zakończy się błędem w linii 2 Jego kompilacja i uruchomienie metody main powiedzie się None Poprawna odpowiedź Co można powiedzieć o źródłach kodu klasy B oraz klasy A (zapisanych w różnych plikach)? package pakiecik; public class B { public static void main(String[] args) { System.out.println((new A()).a); } } public class A{ public Integer a; } Kompilacja obu klas powiedzie się, a uruchomienie metody main zakończy się wypisaniem null Wystąpi błąd podczas kompilacji klasy A Kompilacja obu klas powiedzie się, jednak uruchomienie metody main zakończy się wyrzuceniem wyjątku Wystąpi błąd podczas kompilacji klasy B None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? public class A { static boolean koniec = false; synchronized public void m(){ while(!koniec) try { wait(); } catch (InterruptedException e) { }} synchronized public void n(){ notify();} public static void main(String args[]) { Thread t1,t2; A a = new A(); t1 = new Thread(new Runnable(){ public void run() { a.m(); }}); t2 = new Thread(new Runnable(){ public void run() { koniec = true; a.n(); }}); t2.start(); t1.start(); }} Jego kompilacja zakończy się błędem Jego kompilacja i uruchomienie powiedzie się. Wątek t1 nigdy nie skończy swojego działania Jego kompilacja i uruchomienie powiedzie się. Aby wątek t1 skończył swoje działanie należy zamienić kolejność uruchamiania wątków: t1.start(); t2.start(); Jego kompilacja i uruchomienie powiedzie się. Oba wątki zakończą swoje działanie None Poprawna odpowiedź Co można powiedzieć o poniższej metodzie (zakładając, że wszystkie konieczne importy zostały dokonane)? public void run() { String command; Socket so = null; BufferedReader instream = null; while (true) { try { so = new ServerSocket(2000).accept(); // 1 instream = new BufferedReader( new InputStreamReader(so.getInputStream())); // 2 while(true){ command = instream.readLine(); System.out.println(command); } } catch (Exception ex) { instream.close();so.close(); // 3 } } } Jej kompilacja zakończy się błędem (zły parametr konstruktora ServerSocket w linii 1) Jej kompilacja zakończy się błędem (źle zadeklarowany strumień w linii 2) Jej kompilacja zakończy się błędem (nieobsłużony wyjątek w linii 3) Jej kompilacja powiedzie się None Poprawna odpowiedź Co można powiedzieć o poniższych kodach źródłowych klasy A i interfejsu I? class A implements pakiecik.I { public static void main(String[] args) { new A().m(10); } @Override public void m(int i) { System.out.println(i); } } package pakiecik; public interface I { public void m(int i) throws Exception; } Kompilacja kodu klasy A nie powiedzie się (w implementacji metody m() brak klauzuli throws) Kompilacja kodów powiedzie się, a po uruchomieniu metody main na ekranie zostanie wypisane 10 Kompilacja kodu klasy A nie powiedzie się (w implementacji metody main()brakuje bloku try/catch) Kompilacja kodu klasy A nie powiedzie się (zły modyfikator dostępu w implementacji metody m) None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? public class A { public int i; { i++; System.out.print(i); } A(){ i++;} public static void main(String[] args) { A a = new A(); } } Po kompilacji i wykonaniu metody main na ekranie pojawi się: 1 Jego kompilacja nie powiedzie się (kod wykonywalny można umieścić w bloku, ale blok ten musi być blokiem statycznym) Po kompilacji i wykonaniu metody main na ekranie pojawi się: 2 Jego kompilacja nie powiedzie się (kod wykonywalny może pojawić się jedynie w ciele metody) None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? public class A { enum E { RAZ(1), DWA(2); // 1 final int i; E(int i) { this.i = i; } E() { this.i = 0; } } public static void main(String args[]) { E[] aE = { E.RAZ, E.RAZ }; // 2 for (E e : aE) switch (e) { case RAZ: break; case DWA: break; } // 3 } } Jego kompilacja i uruchomienie powiedzie się Jego kompilacja zakończy się błędem w linii 3 Jego kompilacja zakończy się błędem w linii 1 Jego kompilacja zakończy się błędem w linii 2 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? public class A { public int i; { i++; System.out.print(i); } public static void main(String[] args) { A a1 = new A(), a2 = new A(); } } Po kompilacji i wykonaniu metody main na ekranie pojawi się: 1 Jego kompilacja nie powiedzie się (kod wykonywalny można umieścić w bloku poza ciałem metody, ale blok ten musi być blokiem statycznym) Po kompilacji i wykonaniu metody main na ekranie pojawi się: 11 Jego kompilacja nie powiedzie się (kod wykonywalny może pojawić się jedynie w ciele metody) None Poprawna odpowiedź Co można powiedzieć o poniższym fragmencie kodu (przy założeniu, że wszystkie konieczne importy zostały wykonane)? String ftpurl = "ftp://user:password@server.com/projekty/plik.zip"; try { URL url = new URL(ftpUrl); // 1 URLConnection conn = url.openConnection(); // 2 InputStream inputStream = conn.getInputStream(); } catch (IOException ex) { ex.printStackTrace(); } kod ten skompiluje się i wykona poprawnie podczas jego kompilacji wystąpi błąd w linii 2 kod ten skompiluje się poprawnie, ale podczas próby jego wykonania wystąpi błąd (nieobsługiwany protokół FTP) podczas jego kompilacji wystąpi błąd w linii 1 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie źródłowym Java 1.8 (zamieszczonym w 3 różnych plikach)? public interface I { default public void m(){ System.out.println(); } } public interface J { public void m(); } public class A implements I,J{ public static void main(String[] args){ } } Jego kompilacja i uruchomienie metody main powiedzie się Jego kompilacja zakończy się błędem (w interfejsach nie można implementować metod) Jego kompilacja zakończy się błędem (klasa nie może implementować interfejsów z metodami o takich samych sygnaturach) Jego kompilacja zakończy się błędem (w klasie A brak implementacji metody m()) None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? public class A { public static int i; static { i++; System.out.print(i); } public static void main(String[] args) { A a1 = new A(), a2 = new A(); } } Po kompilacji i wykonaniu metody main na ekranie pojawi się: 1 Jego kompilacja nie powiedzie się (kod wykonywalny może pojawić się jedynie w ciele metody) Po kompilacji i wykonaniu metody main na ekranie pojawi się: 11 Po kompilacji i wykonaniu metody main na ekranie pojawi się: 12 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? class E extends Exception{} public class A { public static void m() throws E, Exception { } public static void main(String[] args) { A.m(); } } Jego kompilacja i uruchomienie metody main powiedzie się Jego kompilacja zakończy się błędem (bo metoda m()nie wyrzuca zadeklarowanych wyjątków) Jego kompilacja zakończy się błędem (brak deklaracji importu klasy Exception) Jego kompilacja zakończy się błędem (brak bloku try/catch) None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? class C { static class B { static final int x = 10; // 1 } } public class A { public static void main(String[] args) { C c = new C(); // 2 C.B obj1 = c.new B(); // 3 } } Podczas kompilacji wystąpi błąd w linii 3 Jego kompilacja i uruchomienie powiedzie się Podczas kompilacji wystąpi błąd w linii 2 Podczas kompilacji wystąpi błąd w linii 1 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? class B extends A{} // 1 class A {} class D extends C implements I{} // 2 class C extends A implements I{} // 3 interface I{} Jego kompilacja zakończy się błędem w linii 1 Jego kompilacja zakończy się błędem w linii 3 Jego kompilacja powiedzie się Jego kompilacja zakończy się błędem w linii 2 None Poprawna odpowiedź Co można powiedzieć o poniższym kodzie? class R extends Thread { Thread t; R() { t = new Thread(this); // 1 t.start(); } public void run() { try { sleep(100); } catch (InterruptedException e) { } } } public class A { public static void main(String args[]) throws InterruptedException { // 2 R r = new R(); r.join(); // 3 } } Jego kompilacja nie uda się ze względu na złe polecenie w linii 3 Jego kompilacja nie uda się ze względu na błędną deklarację w linii 2 Jego kompilacja nie uda się. Błąd wystąpi w linii 1 Jego uruchomienie i kompilacja przebiegną poprawnie None Poprawna odpowiedź Time's up