# Zkouška 2.6.2011

<{ForumPost(poster="6finger", timestamp=2011-06-02 10:58:43)}>
jediné co mi připadlo nové byly 2 následující otázky (snad sem si to zapamatoval dobře)  
  
**1.**

    class A {
        public A() {
            super();
            System.out.print("A");
        }
    }
    class B extends A {
        public B() {
            super();
            System.out.print("B");
        }
    }
    class C extends B {
        public C() {
            System.out.print("C");
        }
    }
    public class Main {
        public static void main(String[] args) {
            C c = new C();
        }
    }
    

Co se vypíše? (pokud něco)  
**A.** nepůjde přeložit, konstruktor třídy A volá super() ale přitom nemá explicitně definovaného předka  
**B.** C  
**C.** ABC  
  
správně je C  
i když v konstruktoru třídy C není explicitně napsáno super(), tak se stejně zavolá konstruktor předka, protože super() se volá implicitně  
  
**2.**

    public class Main {
        synchronized public void foo() {
            synchronized (this) {
                System.out.print("A");
                synchronized (this) {
                    System.out.print("B");
                }
            }
        }
        public static void main(String[] args) {
            new Main().foo();
        }
    }
    

Co se vypíše? (pokud něco)  
**A.** nepůjde přeložit, synchronized nelze napsat uvnitř metody  
**B.** nic, vlákno se zablokuje  
**C.** AB  
  
správně je C  
vysvětlení sem si ale přesně nezapamatoval, kdyžtak mě někdo doplňte... ale mělo by to být něco jako že když metoda jednou získá zámek na objektu, tak už ho další bloky kódu v té metodě taky dostanou...  
  
a pak tam byly víceméně standartní otázky...  
**3.** něco na keywords... (bacha, *true*, *false*, *null *nejsou keywords, ale literály) (bacha není ani jedno:P)  
**4.** co jde přiřadit do proměnné typu boolean... pouze *true* a *false*, tj. žádný 0, 1, "", *null* a podobně  
**5.** o jakékoliv třídě Enum platí:  
A. nemůže mít konstruktor  
B. není potomkem žádné třídy  
C. dědí od *java.lang.Enum*  
D. nemůže obsahovat žádné metody  
E. může obsahovat *public static void main(String\[] args)*  
... platí C, E  
**6.** kam lze napsat *abstract*? ... jen před třídu a metodu... (a do řetězce nebo komentáře:P)  
**7.** něco ohledně kódu:

    interface YourFace {
        public static void main(String[] args) {
            System.out.println("Hello World");
        }
    }
    

metody v interface nemohou mít tělo, a nemohou být static ... (static třídy v interfejsu být mohou)  
**8.** už nevim  
**9.** napsat kód: převedení *float x* na *String* bez explicitního použití *toString()* ... **x + ""**  
**10.** klasika, napsat nějakou operaci nad polem *Pair\[]* ... viz starší příklady  
bacha na porovnávání řetězců... jak v Javě moc neprogramuju a nemám to zažitý tak sem použil a == b místo a.equals(b) i když to je jasný jak facka... (String je objekt a == na objektech porovnává reference)  
a nebyl sem sám  :twisted:
<{/ForumPost}>

