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"); }Результати в коментарях
Чому 2-й і 3-й варіанти дають різні результати?
ВідповістиВидалитиЗнайшов відповідь у специфікації
Видалитиhttp://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21
В двох словах компілятор ігнорує недоступний код в інструкціях if для уможливлення DEBUG змінних типу
if(DEBUG) { ... }
Sample 1 не скомпілиться через unreacheble code (System.out.println("papers");)
ВідповістиВидалитиSample 2 виведе 'java' але скоріш за все буде ворнінг про dead code.
Sample 3 виведе 'java' але мабуть уже без ворнінга