odpowiedzi_by_zambari.doc

(38 KB) Pobierz
Koło, odpowiedzi:

Java, Koło 1, odpowiedzi

 

Pytanie 1.

 

public class A {

protected int i;

A(float i) {

this.i = (int)i;

}

void A (){

this.i=10+this.i;

}

A(long i){

this.i=100+(int)i;

}

public static void main(String args[]){

A a = new A(2.0f);

System.out.println(a.A());

}

}

 

 

konstruktor zawiera wywołanie z parametrem typu float (2.0f), a więc wywoływana jest pierwsza wersja ‘A’, ale przy system.out parametru nie ma, więc wywoływane jest void A, które dodaje 10 do wartości a.

Rumiński jednak poleciał w kulki, i program się nie kompiluje (void type not allowed here).

System.out.println(a.i); wyświetliłoby 2

Prawidłowa odpowiedź: D

 

Pytanie 2.

public class B {

protected int i;

B(double i)

{

this.i=15+(int)i;

}

 

public static void main(String args[]){

  B b = new B(4.8);

  System.out.println(b.i);

}

}

 

odpowiedź: A, 19

użycie (int) przed nazwą zmiennej powoduje jej zaokrąglenie w dół (obcięcie części ułamkowej)

 

Pytanie 3.

public class C {

protected int i;

C(int i){

this.i=15+i;

}

C(long i){

this.i=(int)(10+i);

}

public static void main(String args[]){

C c = new C(4);

System.out.println(c.i);

}

}

 

odpowiedź C, 19

nie wiem dokładnie czemu tak jest, ale konstruktor bez podanego typu uznał, że typ jest int (a nie long). Może zależeć od komplilatora (nie wiem)

 

Pytanie4 .

class Licznik {

public int wartosc=2;

public Licznik(){

wartosc=(22%4)<<1;

}

public static void main(String[] args) {

Licznik l = new Licznik();

System.out.println(l.wartosc);

}

}

 

odpowiedź: B, 4

‘%’ to dzielenie modulo, czyli reszta z dzielenia. Reszta z dzielenia 22 na 4 to 2, 2 << 1 (przesunięcie bitowe w lewo) to 4.

 

Pytanie 5: Dany jest blok instrukcji switch:

char znak = 'c';

switch (znak) {

default:

case 'a': System.out.println("a");

case 'b': System.out.println("b");

}

Które z poniższych stwierdzeń jest prawdziwe?

Wybierz jedną odpowiedź:

a) Blok ten jest niewłaściwy ponieważ tylko liczby całkowite mogą

być użyte w instrukcji switch.

b) W wyniku wykonania tego kodu zostanie wydrukowana litera "a"

a potem "b".

c) Blok ten jest niewłaściwy ponieważ wyrażenie default powinno

być na końcu.

d) W wyniku wykonania tego kodu nic nie zostanie wydrukowane.

e) W wyniku wykonania tego kodu zostanie wydrukowana litera "a".

 

Prawidłowa odpowiedź : B, ponieważ w tej konstrukcji nie został użyty rozkaz BREAK, kończący opis zachowania dla danego przypadku, tylko wpisanie ‘b’ spowoduje przeskok do etykiety ‘B’ a więc niewydrukowanie ‘a’. Wszystko inne co wpiszemy, bez względu na to czy załapie się na ‘a’ czy na ‘default’, spowoduje wykonanie wszystkich poleceń

 

Pytanie 6: Podać jakie słowo kluczowe musi być użyte w deklaracji klasy

Kobieta, jeśli ma ona dziedziczyć z innej klasy Ssak?

 

Class kobieta extends ssak

 

Pytanie 7: Dane jest wyrażenie:

int[][] s = new int[10][5];

Które stwierdzenie jest prawdziwe:

Wybierz jedną odpowiedź:

a) Prezentowana linia kodu jest niewłaściwa.

b) s reprezentuje obiekt macierzy o rozmiarach 10x5

przechowującej wartości typu int

c) s reprezentuje obiekt klasy int o rozmiarze 10x5 przechowującej

wartości typu int

c) s reprezentuje obiekt klasy Integer o rozmiarze 10x5

przechowującej wartości typu int

 

stawiam na odpowiedź C. To znaczy pierwszą, z odpowiedzi C J Ale pewności nie mam, intuicyjny strzał.

 

 

 

Pytanie 8: Dana jest aplikacja:

class Test {

int myArg = 1;

public static void main(String[] args) {

int myArg=2;

System.out.println(Test.myArg);

}

}

 

 

kod nie komplikuje się:

non-static variable myArg cannot be referenced from a static context

main jest statyczne, i nie może się odwoływać do obiektów (myArg) definiowanych jako lokalne

 

Pytanie 9: Która deklaracja dla metody main() aplikacji jest właściwa?

Wybierz jedną odpowiedź:

a) public static void main()

b) static public void main(String[] string)

c) public static void main(String args)

d) static public int main(String[] args)

e) static void main(String[] args)

 

 

main musi być publiczne, więc odpowiedz e odpada

d odpada ponieważ definiuje main jak zwracającą wartość typu int, więc potrzebny byłby return

odpowiedz b komplluje sie i uruchamia

odpowiedz c daje no such metod main

 

poprawna jest odpowiedz b.

 

Pytanie 10: Który identyfikator jest nieprawidłowy?

Wybierz jedną odpowiedź:

a) $_jedi

b) _jedi

c) 3jedi

d) _5_

 

odpowiedz C: identyfikator nie moze zaczynac sie od cyfry

 

 

 

Pytanie 11: Podaj kod wywołanie konstruktora (bez argumentów) klasy

Klasa w celu stworzenia referencji do obiektu (identyfikator k).

 

Klasa k = new Klasa();

 

final class First {

protected static int a = 1;

static int b = 2;

}

class Second extends First {

public void method() {

System.out.println(a + b);

}

}

 

po klasach finalnych nie można dziedziczyć, odpowiedz D

 

Pytanie 13: Dany jest fragment kodu:

 

String s1 = new String("ALA");

String s2 = new String("ALA");

if (s1 == s2)

if (s1.equals(s2))

System.out.println("a");

else

System.out.println("b");

else

if (s1.equals(s2))

System.out.println("c");

else

System.out.println("d");

 

 

 

S1==s2 zwraca false (obikety nie sa sobie rowne), natomiast s1.equals(s2) zwraca true,

Wiec jako odpowiedz dostajemy C

 

Pytanie 14: Dany jest fragment kodu:

int[] arr = {1, 2, 3};

for (int i=0; i < 2; ++i)

arr[i+1] = 0;

Które wyrażenie jest prawdziwe (po zadziałaniu pętli)?

Wybierz jedną odpowiedź:

a) arr[0] == 0

b) arr[1] == 1

c) arr[1] == 0

d) arr[2] == 3

e) arr[3] == 0

 

odpowiedz c

 

 

Pytanie 15 : Dany jest kod (2 min.):

class E {

int i;

E(int i) {

this.i = i * 2;

}

}

class F extends E {

public static void main(String[] args) {

F f = new F(2);

}

F(int i) {

super(i);

System.out.println(i);

}

}

Co się stanie w wyniku próby kompilacji i uruchomienia aplikacji?

 

b) Zostanie wydrukowana wartość 2

 

ale dlaczego? Ciężko powiedzieć. Bez komendy super() kod nie komplikuje się, pisząc, że nie może znaleźć konstruktora E. Super to odniesienie do nadklasy, po której dziedziczymy, ale jak ktoś wie jak to wyjaśnić to proszę o kontakt ;)

 

 

 

Strasznie się dla Was zmęczył przez te 50 minut:

zambari@sedez.iq.pl

http://www.zambari.art.pl

Zgłoś jeśli naruszono regulamin