По ходу подготовки к сертификационному экзамену SCJP, а также при чтении в различных источниках нюансов использования языка Java, возникают множество различных вопросов. Также некоторые особенности языка кажутся совершенно нелогичными, однако так указано в спецификации языка, и каждый уважающий себя профессионал стремится к тому, чтобы знать эти мелочи.
Данный топик посвящен коротким примерам программ (или участков кода). Для каждой программы требуется ответить на простые вопросы: как она будет выполняться и что будет выведено на консоль после ее выполнения. Предполагается использование Java 1.6, если в задаче не указано иное.
P.S. Если у вас есть интересные задачи на эту же тему — выкладывайте в комментариях.
Предлагаю вашему вниманию первую порцию задач.
Спасибо тем, кто помог найти и исправить ошибки в топике:
barker, mohax, sanix
Данный топик посвящен коротким примерам программ (или участков кода). Для каждой программы требуется ответить на простые вопросы: как она будет выполняться и что будет выведено на консоль после ее выполнения. Предполагается использование Java 1.6, если в задаче не указано иное.
P.S. Если у вас есть интересные задачи на эту же тему — выкладывайте в комментариях.
Предлагаю вашему вниманию первую порцию задач.
- Какую численную константу нужно подставить вместо многоточия, чтобы выражение стало истиным? (принимаются также ответы в виде стандартных констант, объявленных в классах-обертках над примитивными типами)
(int) ((char) -1) == ... (short) ((int) ((char) -1)) == ...
- Какую константу нужно подставить вместо многоточия, чтобы на экран вывелось COOL?
int x = ...; if (x != 0 && x == -x) { System.out.println("COOL"); }
Что изменится, если поменять тип на long?
- Какую константу нужно подставить вместо многоточия, чтобы на экран вывелось COOL?
double x = ...; if (x != x) { System.out.println("COOL"); }
- Что будет выведено в результате выполнения данной программы?
public class Test { static int a() { print("a"); return 1; } static int b() { print("b"); return 1; } static int c() { print("c"); return 1; } static void print(String s) { System.out.println(s); } public static void main(String[] p) { int d = a() + b() * c(); print("" + d); } }
- Что будет выведено в результате выполнения данной программы?
public class Test { static int a() { print("a"); return 1; } static int b() { print("b"); return 1; } static int c() { print("c"); return 1; } static void print(String s) { System.out.println(s); } public static void main(String[] p) { if (a() == b() || a() == c()) { print("d"); } } }
- Что будет выведено в результате выполнения данной программы?
public class Test { static int a() { print("a"); return 1; } static int b() { print("b"); return 1; } static int c() { print("c"); return 1; } static void print(String s) { System.out.println(s); } public static void main(String[] p) { try { if ((a() + b()) / (a() - b()) + c() == a()) { print("d"); } } catch (Throwable e) { } } }
- Что будет выведено в результате выполнения данной программы?
class BasicExcept extends RuntimeException { private int b = 10; public BasicExcept() { b = 15; throw this; } { b = 5; } public int getB() { return b; } public String toString() { return "Superclass"; } } class Except extends BasicExcept { private int a = 10; public Except() { super(); a = 15; } { a = 5; } public int getA() { return a; } public String toString() { return "Subclass"; } } public class Test { public static void main(String[] args) { try { new Except(); System.out.println("No exception"); } catch (Except e) { System.out.println("Exception occured! A = " + e.getA() + ", B = " + e.getB() + ", toString() = " + e.toString()); } } }
- Что будет выведено в результате выполнения данной программы?
class TryExcept extends RuntimeException { private String s; static { init(); } public TryExcept() { s = "Hahaha"; } private static void init() { throw new TryExcept(); } public String get() { return s; } } public class Test { public static void main(String[] args) { for (int i = 0; i < 2; i++) { try { new TryExcept(); } catch (Throwable e) { System.out.println("e = " + e); if (e.getCause() instanceof TryExcept) { TryExcept ex = (TryExcept) e.getCause(); System.out.println("e instanceof " + TryExcept.class.getName() + ", s = " + ex.get()); } } } } }
Спасибо тем, кто помог найти и исправить ошибки в топике:
barker, mohax, sanix