Расхождения между удаленными и локальными филиалами

Я думал, что внес свой ответ, чтобы добавить более подробную информацию из Спецификаций.

Во-первых, В чем разница между передачей по ссылке или передачей по значению?

Передача по ссылке означает, что параметр вызываемых функций будет таким же, как переданный аргумент вызывающих (а не значение, а идентификатор - сама переменная).

Передача по значению означает, что параметр вызываемых функций будет копией переданного аргумента вызывающих.

blockquote>

Или из википедии, на тему прохода -by-reference

При оценке пошаговой ссылки (также называемой pass-by-reference), функция получает неявную ссылку на переменную, используемую как аргумент, а не копией его стоимости. Это обычно означает, что функция может изменять (т. Е. Назначать) переменную, используемую как аргумент, - то, что будет видно ее вызывающей стороне.

blockquote>

И по вопросу прохода -value

При вызове по умолчанию вычисляется выражение аргумента, и результирующее значение привязывается к соответствующей переменной в функции [...]. Если функция или процедура могут назначать значения своим параметрам, назначается только ее локальная копия [...].

blockquote>

Во-вторых, нам нужно знать, что использует Java в своих вызовах метода , Спецификация языка Java указывает

При вызове метода или конструктора (§15.12) значения фактических выражений аргументов инициализируют вновь созданные переменные параметра, каждый из которых объявленный тип перед выполнением тела метода или конструктора.

blockquote>

Таким образом, он присваивает (или связывает) значение аргумента соответствующей переменной параметра.

Каково значение аргумента?

Рассмотрим ссылочные типы, спецификация Java Virtual Machine Specification

Существует три типа ссылочных типов: типы классов, типы массивов и типы интерфейсов. Их значения - это ссылки на динамически созданные экземпляры классов, массивы или экземпляры классов или массивы, которые реализуют интерфейсы соответственно.

blockquote>

В спецификации языка Java также указано

Опорные значения (часто только ссылки) являются указателями на эти объекты и специальной нулевой ссылкой, которая ссылается на отсутствие объекта.

blockquote>

Значение аргумента ( определенного ссылочного типа) является указателем на объект. Обратите внимание, что переменная, вызов метода с типом возвращаемого типа ссылочного типа и выражение создания экземпляра (new ...) все решаются для значения ссылочного типа.

Итак

public void method (String param) {}
...
String var = new String("ref");
method(var);
method(var.toString());
method(new String("ref"));

все связывают значение ссылки с экземпляром String с вновь созданным параметром метода, param. Это именно то, что описывает определение pass-by-value. Таким образом, Java является передачей по значению.

Тот факт, что вы можете следовать ссылке для вызова метода или доступа к полю ссылочного объекта, совершенно не имеет отношения к разговору. Определение pass-by-reference было

Это обычно означает, что функция может изменять (т. Е. Присваивать) переменную, используемую как аргумент, - то, что будет видно ее вызывающей стороне.

blockquote>

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


Примитивные значения также определены в Спецификации виртуальной машины Java, здесь . Значение типа представляет собой соответствующее значение интеграла или с плавающей запятой, соответствующим образом закодированное (8, 16, 32, 64 и т. Д.).

1
задан Charles Vorbach 20 January 2019 в 10:09
поделиться

1 ответ

Где нажать? и что?

Прежде всего вам нужно создать папку / хранилище для вашей учетной записи github в Интернете.

git remote add origin [address of your repository on guithub]

git push origin master (use this every time you want to push after adding)
0
ответ дан Petros Evangelos Triantafyllis 20 January 2019 в 10:09
поделиться
Другие вопросы по тегам:

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