вторник, 3 июня 2008 г.

Java Puzzle 95: Just Desserts

В этой головоломке показаны задачи, которые часто приходится решать нам, разработчикам языка Java. Что напечатают приведённые ниже программы?

public class ApplePie {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 100; i++); {
count++;
}
System.out.println(count);
}
}

Эта головоломка по мотивам бага 4157460 напечатает "1".

import java.util.*;
public class BananaBread {
public static void main(String[] args) {
Integer[] array = {3, 1, 4, 1, 5, 9};
Arrays.sort(array, new Comparator() {
public int compare(Integer i1, Integer i2) {
return i1 < i2 ? -1 : (i2 > i1 ? 1 : 0);
}
});
System.out.println(Arrays.toString(array));
}
}

Эта головоломка по мотивам бага 4763901 напечатает "[3, 1, 4, 1, 5, 9]". Хотя, технически, результат неопределён, так как зависит от реализации в конкретной JVM.

public class ChocolateCake {
public static void main(String[] args) {
System.out.println(true?false:true == true?false:true);
}
}

Эта головоломка напечатает "false". При синтаксическом разборе кода компилятор не учитывает пробелы - они никак не влияют на последовательность операторов. Скобки спасут отца русской демократии ;)

Урок этой головоломки, да и всей книги в целом: не кодируй как мой младший брат (Don't code like my brother).

Комментариев нет:

Отправить комментарий