Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Классы и Объекты
Домашняя страница > Изучение Языка Java > Классы и Объекты

Ответы на Вопросы и Упражнения: Объекты

Вопросы

  1. Вопрос: Что случилось со следующей программой?

    public class SomethingIsWrong {
        public static void main(String[] args) {
            Rectangle myRect;
            myRect.width = 40;
            myRect.height = 50;
            System.out.println("myRect's area is "
                               + myRect.area());
        }
    }
    

    Ответ: код никогда не создает a Rectangle объект. С этой простой программой компилятор генерирует ошибку. Однако, в более реалистической ситуации, myRect мог бы быть инициализирован к null в одном месте скажите в конструкторе, и используемый позже. В этом случае программа скомпилирует очень хорошо, но генерирует a NullPointerException во времени выполнения.

  2. Вопрос: следующий код создает один массив и один строковый объект. Сколько ссылок на те объекты существует после того, как код выполняется? Любой - объект, имеющий право на сборку "мусора"?

    ...
    String[] students = new String[10];
    String studentName = "Peter Smith";
    students[0] = studentName;
    studentName = null;
    ...
    

    Ответ: есть одна ссылка на students у массива и того массива есть одна ссылка на строку Peter Smith. Никакой объект не имеет право на сборку "мусора".

  3. Вопрос: Как программа уничтожает объект, который она создает?

    Ответ: программа явно не уничтожает объекты. Программа может установить все ссылки на объект к null так, чтобы это стало имеющим право на сборку "мусора". Но программа фактически не уничтожает объекты.

Упражнения

  1. Осуществление: Фиксируйте вызванную программу SomethingIsWrong показанный рассматриваемый 1.

    Ответ: См. SomethingIsRight:

    
    public class SomethingIsRight {
        public static void main(String[] args) {
            Rectangle myRect = new Rectangle();
            myRect.width = 40;
            myRect.height = 50;
            System.out.println("myRect's area is " + myRect.area());
        }
    }
    
  2. Осуществление: Учитывая следующий class, вызванный NumberHolder, запишите некоторый код, который создает экземпляр class, инициализирует его две задействованных переменные, и затем выводит на экран значение каждой задействованной переменной.

    
    public class NumberHolder {
        public int anInt;
        public float aFloat;
    }
    

    Ответ: См. NumberHolderDisplay:

    
    public class NumberHolderDisplay {
        public static void main(String[] args) {
    	NumberHolder aNumberHolder = new NumberHolder();
    	aNumberHolder.anInt = 1;
    	aNumberHolder.aFloat = 2.3f;
    	System.out.println(aNumberHolder.anInt);
    	System.out.println(aNumberHolder.aFloat);
        }
    }
    
«ПредыдущийTOC

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Вопросы и Упражнения: Объекты