2014. április 22., kedd

Oracle 1Z0-803 vizsga jegyzet

Az Oracle Certified Associate, Java SE 7 Programmer vizsga felkészülés során összeírtam egy rövid jegyzetet és 3 feladványt amit most megosztok veletek is, hátha hasznos lesz valakinek.

- A default package-ben lévő osztályok nem importálhatók
- A main() paramétere vararg is lehet: main(String ...args)
- A hozzáférés és nem hozzáférés módosítók felcserélhetők (pl.: public - static)
- && és || short-circuit operátorok (&, | pedig nem)
- Precedencia táblázat
- A Java Pass By Value-t használ!
- Hozzáférés módosítók (public, protected, default, private)
- Overloading vs Overriding
- Encapsulation, Information hiding
- Polimorfizmus
- A metódus argumentum és a metódus paraméter nem ugyanaz
- A változónevek karakterszáma tetszőleges
- A változónevekben lehetnek számok, de nem a legelső karakter helyen
- A változóneveknél, a speciális karakterek közül csak az aláhúzás és a valuta jel használható, akár a legelső karakter helyen is.
- Lokális változókhoz ill. metódus paraméterekhez nem adható meg hozzáférés módosító
- A vararg az utolsó paraméter lehet és csak egy definiálható metódusonként
- Ha nincs felhasználó által definiált konstruktor, akkor a fordító generál egy paraméter nélkülit
- A String objektum immutable
- A StringBuilder és a StringBuffer mutable
- "ORACLE".substring(2) -> ACLE
- "ORACLE".substring(2,4) -> AC
- A String trim metódusa a kezdeti és a végi white space karaktereket törli csak
- A StringBuilder-nek nincs trim metódusa
- new StringBuilder("0123456").replace(2,3,"ABCD") -> 01ABCD3456
- new StringBuilder("ABC").append("123456",1, 3) -> ABC23
- new StringBuilder("ABC").insert(1,true) -> AtrueBC
- new StringBuilder("ABC").insert(1,"123456",1,3) -> A23BC
- A tömb az egy objektum
- A tömb mérete mindig int típusú és 0 is lehet
- A List<String> list=new ArrayList<>(); is érvényes
- A String class-ban az equals() felül van definiálva, a StringBuilder-ben nincs
- A switch()-ben használható típusok: char, byte, short, int, String, enum
- Az interface-ben minden metódus public és abstract (mégha nincs is kiírva)
- Az interface-ben minden változó public, static, final (mégha nincs is kiírva)
- A finally blokk nem fut le System.exit() hívásnál és fatal error-nál sem
- Ha a catch blokknak van visszatérési értéke a finally blokk akkor is lefut
- Checked vs Unchechked Exceptions, Errors
- invalid ArrayList pozíció esetén -> IndexOutOfBoundsException
- invalid array pozíció esetén -> ArrayIndexOutOfBoundsException
- Ha egy static inicializáló blokkban dobódik bármilyen RuntimeException -> ExceptionInInitializerError
- Rekurzív végtelen hívásánál -> StackOverflowError
- A lokális változók nem kapnak alapértelmezett kezdő értéket
- while (false) {...} vagy for( int i = 0; false; i++) x = 3; -> Fordítási hiba
- A konstruktorok nem öröklődnek
- Short k = 9; Integer i = 9; System.out.println(k == i); // compile error
- 'b'+63+"a" : 161a
- int a = b = c = 100 -> invalid
- byte: -128 to 127

És végül a gyakorláshoz összeírtam három "mit ír ki" jellegű feladványt aminek a megoldását a cikk végén megtaláljátok!

1. Overriding and hiding methods
  
class A {
  int x = 10;
  static int y = 20;

  public void m1() {
    System.out.println("a");
  }

  public static void m2() {
    System.out.println("b");
  }
}

class B extends A {
  int x = 30;
  static int y = 40;

  public void m1() {
    System.out.println("c");
  }

  public static void m2() {
    System.out.println("d");
  }

}

class MyTest {
  public static void main(String[] args) {
    System.out.println(new B().x + ", " + new B().y);
    new B().m1();
    new B().m2();

    A a = new B();
    System.out.println(a.x + ", " + a.y);
    a.m1();
    a.m2();
  }
}

2. Initialization order
  
class AA {

  public AA() {
    System.out.println("AA constructor");
  }

  static int i = 10;
  {
    i = 15;
    System.out.println("AA " + i);
  }
  static {
    System.out.println("AA static " + i);
  }
}

class BB extends AA {

  public BB() {
    System.out.println("BB constructor");
  }

  static {
    i = 45;
    System.out.println("BB static " + i);
  }
  {
    i = 30;
    System.out.println("BB " + i);
  }
}

class MyTest {

  public static void main(String args[]) {
    BB m = new BB();
  }
}

3. Throws
  
import java.io.FileNotFoundException;
import java.io.IOException;

class Super {

  public Super() throws IOException {
  }

  public void m1() throws IOException {

  }
}

class Sub extends Super {

  public Sub()  throws FileNotFoundException{ 
  }

  public void m1() throws Exception {

  }
}

És a válaszok:

1. Overriding and hiding methods

30, 40
c
d
10, 20
c
b

2. Initialization order

AA static 10
BB static 45
AA 15
AA constructor
BB 30
BB constructor


3. Throws

Compile error
throws FileNotFoundException ->  throws Exception
throws Exception ->  throws FileNotFoundException

2014. április 9., szerda

Oracle Certified Associate, Java SE 7 Programmer

A héten sikeresen leraktam az Oracle 1Z0-803 vizsgát, a mai napon pedig megkaptam az Oracle Certified Associate, Java SE 7 Programmer tanúsítványt elektronikus formában. A vizsgán előforduló témakörök az alap Java ismeretekre fókuszáltak, azonban a feladatok többsége tipikusan becsapós volt, mint például ezek a minta feladatok. A vizsgán egyébként 90 kérdésből 150 perc alatt min. 63 %-ot kellett elérni, ami szerintem bőven teljesíthető egy kis készülés után.


A felkészüléshez Mala Gupta - OCA Java SE 7 Programmer I Certification Guide könyvét olvasgattam át és az interneten fellelhető vizsga kérdésekből oldottam meg néhányat. A saját jegyzetemet itt elérhetitek. A felkészülésre fordított idő úgy gondolom megtérült, mivel nemcsak felfrissítettem, de rendszereztem is a Java 7-es ismereteimet. Irány az 1Z0-804!