среда, 17 января 2007 г.

Java Puzzle 10: Tweedledee

Напишите декларации переменных x и i так, чтобы следующий оператор компилился:
x = x + i;
а следующий оператор - нет:
x += i;

Тут тоже проблема в том, что составной оператор присваивания автоматически приводит тип выражения справа к типу переменной слева.
Object x = "X";
String i = "I";
Cледующий оператор компилится:
x = x + i; // создается новая строка
а следующий оператор - нет:
x += i; // нельзя сложить два объекта

6 комментариев:

  1. Ты, дядька СЭМ, составь и опубликуй памятку с разъснениями. Полезно будет.
    Видел намедни Мишку. Только нонеча полюбил С#, собираются омею в оперсурц выложить...

    ОтветитьУдалить
  2. Тогда вешай какой-то еще дополнительный ярлычок, кроме java. Чтобы найти можно было.

    Кстати, ты обратил внимание, что Блоггер вывели из беты?

    ОтветитьУдалить
  3. Хорошо.

    И что выход из беты ему дал? ;-)

    ОтветитьУдалить
  4. Я несколько поздновато, но ваш код отлично работает в java 1.6, компилируется и выполняется без ошибок =(

    ОтветитьУдалить
  5. Попробуйте ещё раз. Внимательно!

      Object x = "X";
      String i = "I";
      x = x + i;
      x += i;

    В четвёртой строке будет ошибка:

    incompatible types
    found : java.lang.Object
    required: java.lang.String

    ОтветитьУдалить