четверг, 25 января 2007 г.

Java Puzzle 16: Line Printer

What does the following code print? Is its behavior platform dependent?
// Note: \u000A is line feed
System.out.print(\u000A);

Все та же проблема с Unicode-символами. Это не скомпилируется, так как первый \u000A разобъет комментарий на две части. Если же комментарий убрать, то все равно не скомпилируется, так как нет метода print() без параметров. Вывод: старайтесь вообще не использовать Unicode-символы.

Java Puzzle 15: Hello Whirled

Is it a valid comment?
// generated from F:\Root\app\units\my.idl

Это не скомпилируется из-за проблем с Unicode-символом \units, который является неправильным. Тут авторы дают совет, чтобы все Unicode-символы оформлялись правильно, даже если они находятся в комментарии. Рекомендуют аккуратно использовать \ и, как следствие, не копировать файловые имена Windows в код с помощью автоматических средств.

Остров

Посмотрел фильм Павла Лунгина "Остров". Сильный фильм. На мой взгляд только один просчет - слабый саундтрек, но и так этот фильм очень цепляет. Смотрел неотрываясь. Все остальное - 5 баллов, а подбор актеров - 5+. Мамонов клево сыграл, но и остальные не подкачали. Рекомендую!

Колонки

Наконец-то перевез от Паши колонки. Впервые за два года послушал качественный звук. Приятно. Решил посмотреть фильм.

Наушники для улицы

Тут народ вовсю обсуждает, какие наушники использовать на улице, чтобы шумов слышно не было. Koss the Plug или Sennheiser PX200 (или даже PXC250 с активной системой подавления шума).
Я считаю, что все это чушь. Так как если не будешь слышать ничего, то в неприятность попасть - запросто. Например, под машину...

Java Puzzle 14: Escape Rout

Что будет напечатано:
System.out.print("a\u0022.length()+\u0022b".length());

Java не выполняет никакой специальной обработки Unicode-символов в строке. При компиляции \u0022 преобразуется в ". И в результате напечатает 2. Если же автор хочет вставит двойную кавычку в строку, то он должен использовать не Unicode-символы, а escape последовательности (типа \"). И не используйте Unicode-символы для ASCII символов во избежание путаницы.

Java Puzzle 13: Animal Farm

Что напечатает следующий код:
String pig = "A2";
String dog = "A" + pig.length();
System.out.println("Animals are equal: " + pig == dog);

В этом разделе обсуждается несколько проблем:
1. Отсутствие скобок.
Поэтому выполнение сложения строк происходит до их сравнения.
2. Интернированные строки.
Любые объекты должны сравниваться не по ==, а с помощью метода equals(). При грамотно реализованном методе equals() затраты на его вызов будут минимальные.