К панели нечто, или не к панели нечто: это - вопрос

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

28
задан MathieuF 1 May 2012 в 11:43
поделиться

9 ответов

Это строго зависит от того, что является Вами пытающийся преподавать. Иногда, при показе примера программирования, необходимо объявить, что несколько вещей только для отрывка "завершены", и теми немногими вещами не является ядро того, что Вы показываете.

, Например, если Вы хотите показать, как выдать исключение, я полагаю, что нормально представлять отрывок как

public void foo() { 

   // Do some things

   if (errorCondition) {
      throw new Exception("Error message");
   }

}

, Так как точка в нем показывает исключения, нет никакого смысла в заботе об имени метода, таким образом, нечто "законно" в этом контексте, или по крайней мере для меня.

то, Что я не принял бы (в этом том же примере) будет

public void foo() { 

   // Do some things

   if (bar) {
      throw new Exception(baz);
   }

}

, поскольку он затеняет то, что Вы пытаетесь преподавать.

38
ответ дан Santiago Palladino 28 November 2019 в 02:46
поделиться

Я вижу точку, когда говорящий не программисты, но когда Вы в электронной доске, обсуждая проблему с некоторыми членами команды.. Я пропустил бы свой foos и свои панели. Я думаю, что распространенность нечто/панели является примером способности большинства программистов думать абстрактно.

, Вероятно, больше проблемы, если Вы находитесь на учебной арене.

15
ответ дан Niniki 28 November 2019 в 02:46
поделиться

Я иногда использую их. Но только если "реальное" имя не релевантно.

7
ответ дан Toon Krijthe 28 November 2019 в 02:46
поделиться

Я использую их при демонстрации, что любые значения 'нечто' и 'панели' будут достаточны, как "Вы может получить размер объекта с sizeof (нечто)". Это удобно для того, чтобы заставлять людей понять общее понятие и не только подробные сведения. Например, если я сказал, что "можно получить размер объекта с чем-то как sizeof (интервал)", тогда почти гарантируется, что кто-то спросил бы, работает ли это также на плавания.

3
ответ дан Kirk Strauser 28 November 2019 в 02:46
поделиться

Для полностью нового программиста я должен говорят, что термины foo и bar могут быть неизвестны. Я думал, что они были чем-то специфичным для языка (а именно C), но после проверки Википедии я теперь знаю, что они просто абстрактные заполнители. Так что, если ваша аудитория состоит из людей, которые не знают их значения, гораздо яснее другое. Также first_number и так говорит, что это числа, как бы они ни были представлены, а не что-то еще.

2
ответ дан 28 November 2019 в 02:46
поделиться

Я выбираю не к нечто и панели каждый раз, когда моя аудитория достаточно знакома с понятием под рукой, что это доказало бы вред их пониманию.

единственное время, Foo и Bar должны использоваться, - когда Вы говорите о чем-то столь абстрактном, что добавление контекста потребовало бы дополнительного обсуждения. Тогда Foo и Панель являются намного большим количеством читаемого и созданного кода, который более followable, чем альтернативы, как x, y и z.

1
ответ дан tom.dietrich 28 November 2019 в 02:46
поделиться

Я думаю, что это происходит из-за мягко, или возможно не так мягко, саркастическая природа многих программистов. В то время как многие люди попытались поместить различные значения в нечто/панель больше всего, или по крайней мере многие, нас думают о "FUBAR", F ** K Вне Всего Распознавания. Это - способ для "опытных" людей сделать подлый комментарий обо всех остальных.

из-за этого я никогда не использую его для не программист и редко использую его даже с опытными программистами. Если я действительно использую Вас, может держать пари, что я делаю скрытую ссылку на предмет под рукой.

1
ответ дан Jim C 28 November 2019 в 02:46
поделиться

Вдобавок к предотвращению бессмысленных слов как нечто & панель, я нашел, что намного более важно обеспечить примеры кода для реальных сценариев, которые имеют те же отношения. Это действительно помогает ученику понять тему правильно и предотвращает недоразумения. Например, если я учу Внедрению зависимости и выставочному примеру кода, где экземпляр Автомобильного класса введен в класс Драйвера, ничья попытка запутаться и думать "Так, чтобы средство Автомобиль управляло Драйвером тогда?".

1
ответ дан too much php 28 November 2019 в 02:46
поделиться

Я плохо знаком с программированием и более или менее выучился самостоятельно. Я считал много примера кода онлайн и вначале заменил нечто и панель & c. с более соответствующими именами, такими как firstnumber и secondnumber примеры выше.

я теперь предпочитаю x, y, z, я..., потому что нечто и панель, кажется, зажигают лингвистические импульсы в моем уме и могут отвлечь меня от стандартной программы, и я разработал, несколько, способность содержать целый набор различных переменных в моей голове и помнить, каковы они. Но я все еще определенно рекомендовал бы использовать соответствующее именование при обучении кому-то еще, особенно при объяснении кода кому-то, который не программирует, но должен понять, как программа работает.

0
ответ дан user51498 28 November 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: