Почему важно понимать разницу между ссылочными типами и примитивными типами в Java? - PullRequest
0 голосов
/ 27 апреля 2009

Я привожу список проблем в Java, которые не могут быть правильно поняты без предварительного понимания разницы.

Например:

  • Передача параметров в методы
  • Точно, какие ограничения накладываются при использовании «final» в объявлении переменной.
  • Что означает ==

Еще?

РЕДАКТИРОВАТЬ: этот вопрос, кажется, не имеет смысла для людей. Мотивация заключается в том, что мой опыт изучения Java начинающим состоял в том, что разница между, например:

int i = 1;

и

Set<Thing> set = new Set<Thing>();

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

РЕДАКТИРОВАТЬ: все еще не хорошо. Не стесняйтесь закрывать.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2009

Я думаю, что наиболее важным моментом является понимание того, что ссылки в Java содержат не сами объекты, а только адрес (или указатель, или как вы хотите это называть) для самого объекта. Поэтому важно понимать, что у вас всегда есть две вещи:

  1. Ссылка (которая хранится в переменной)
  2. Объект (который не может быть сохранен в переменной - только ссылка указана)

Если вы понимаете эту ключевую концепцию, такие вещи, как ==, довольно легко понять, потому что теперь вы знаете, что просто сравниваете ссылки, а не объекты.

В заключение: Перед тем, как учить, как использовать объекты, объясните, в чем разница между объектом и его ссылкой.

0 голосов
/ 27 апреля 2009

Я согласен с Бенедиктом Эгером в том, что отношения между ссылками и объектами являются наиболее важной концепцией для понимания.

Для вашего списка проблем: оператор "=" может иногда вызывать недоумение у людей, поскольку начинающим может показаться, что он "копирует" примитивы, но "разделяет" объекты. Это гораздо меньше проблем в Java, чем в C ++, поскольку «=» не будет никогда копировать объект (Java не помещает объекты в стек). Тем не менее, я видел "=" начинающих путать, особенно когда они думают, что "=" создаст дубликат копии массива.

0 голосов
/ 27 апреля 2009

Я думаю, что ваш вопрос: если бы вы объяснили кому-то функцию Java, то для лучшего объяснения вам нужно сравнить ее с другой функцией.

Например,

== Vs .equals ()

Так я думаю -

  • статический и нестатический
  • интерфейс против класса
  • синхронизирован против несинхронизированных

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...