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

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

Назначение:

  • копирует содержимое переменной RHS в переменную LHS
  • примитивы: копируется значение примитива (вызов по значению)
  • ссылки: адрес скопирован (Звонить по ссылке)
  • последствия: для ссылок объект не копируется, он используется совместно (ссылочные переменные являются псевдонимами)
  1. Вызов по значению:

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

2. Звонить по ссылке

При вызове по ссылке при попытке копирования новая память не создается/не выделяется. Просто создается ссылка, которая указывает на старую память. Все составные типы данных по умолчанию следуют вызову по ссылке. Давайте посмотрим на пример ниже для лучшего понимания.

Это связано с тем, что новая память не выделяется. arr1 и arr2 указывают на одну и ту же память.