Správné odpovědi:
1.) [-128 ; 127]
2.)
a) Třída může implementovat od 0 do
interfaců
b) Iterface může implementovat od 0 do
interfaců
3.) Ve vnitřní třídě jsou povoleny příznaky
a) public
b) private
c) static
4.) A a B jsou v Java 8 správně implementované s tělem defaultních metod hello, takže se přeloží bez problému. Zato C, které dědí od obou interfaců neví, pro kterou metodu se má rozhodnout. Tudíž se nepřeloží. Správná náprava by byla overridnout metodu hello ve třídě C. Takto je ale správná odpověď: Přeloží A a B, ale nepřeloží C.
5.) Mezi keywords, které byly vypsané nepatřily namespace, finalize a self.
6.) Není nutné odchytávat výjimky zděděné od Error a Runtime.
7.) Vyhodí chybu. Narozdíl od Cpp neobsahují argumenty programu název programu. Tedy pole předané funkci main vypadá takto: ["hello","world"]. Tedy obsahuje 2 položky a index 2 by se snažil přistoupit k 3. položce -> IndexOutOfBoundsException.
8.) Synchronizovat blok se nechá pomocí libovolného objektu. Třída objekt obsahuje již vše potřebné k synchronizaci. Zápis je správný, takže se nechá použít. Od objektu dědí jak String, tak Object, Thread i Runnable. Nepatří sem tedy pouze základní typ int. Pokud by se jednalo například o Integer (objektová reprezentace základního typu), bylo by vše v pořádku.
9.) Ano, například String. Pozor! je potřeba jej inicializovat nějakou hodnotou. Například String x = ""; poté x + 0 = "0" != ""
10.) Zdrojový kód byl takovýto:
InputFileStream ifs = ...;
OutputFileStream ofs = ...;
char c;
while((c = ifs.read()) != -1){
ofs.write(c);
}
ifs.close();
ofs.close();
Ideální řešení:
try( InputFileStream ifs = ... ; OutputFileStream = ...; ){
char c;
while((c = ifs.read()) != -1){
ofs.write(c);
}
} catch (IOException ex){
System.out.println(ex.getMessage());
}
Nechalo by se to řešit i vícenásobným počtem try-catch bloků, ale pak by bylo třeba doplnit finally a v tom streamy uzavřít, ale zase by se muselo dát pozor na to, aby jednotlivé streamy byly inicializované. Tedy, abychom nedereferencovali null pointer. Uzavírání streamů řeší try-with-resources sám