Translate

понеділок, 21 січня 2013 р.

Java Quiz


Невеликий тест, що буде в результаті виконання коду і чому (не користуватись IDE!!!)

Sample 1
public void javapapers() {
   System.out.println("java");
   return;
   System.out.println("papers");
}


Sample 2
public void javapapers() {
   System.out.println("java");
    if(true) {
     return;
    }
   System.out.println("papers");
}


Sample 3
public void javapapers() {
    System.out.println("java");
     while(true) {
       return;
     }
     System.out.println("papers");
}
Результати в коментарях

3 коментарі:

  1. Чому 2-й і 3-й варіанти дають різні результати?

    ВідповістиВидалити
    Відповіді
    1. Знайшов відповідь у специфікації
      http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21
      В двох словах компілятор ігнорує недоступний код в інструкціях if для уможливлення DEBUG змінних типу
      if(DEBUG) { ... }

      Видалити
  2. Sample 1 не скомпілиться через unreacheble code (System.out.println("papers");)
    Sample 2 виведе 'java' але скоріш за все буде ворнінг про dead code.
    Sample 3 виведе 'java' але мабуть уже без ворнінга

    ВідповістиВидалити