2013-07-05 1 views
0

Java строго передается по значению. Я все еще смущен этой концепцией. Я прошел через многие сайты, чтобы получить ответ на это, но я не могу найти веских оснований. Есть ли правильная причина, по которой Java не проходит по ссылке?Причина: почему Java не проходит по ссылке?

+3

На каком уровне вы ожидаете ответа? Это теоретический вопрос? Вы хотите знать причины этого дизайна? –

+1

Этот вопрос был задан перед: http://stackoverflow.com/questions/5298421/why-doesnt-java-support-pass-by-reference-like-c – JREN

+0

Указатели и разыменование, в которых наименее интуитивно понятная часть из C++, java передает ссылку по значению, решает почти все случаи использования для пропуска C++ по ссылке, избегая при этом путаницы. –

ответ

2

Значение «reference variable» - это «адрес» на Java. Когда вы передаете ссылочную переменную методу, в стек помещается новая ссылочная переменная, и копия значения переданной ссылочной переменной используется для инициализации значения нового локального ссылочного значения, как и любой примитивный тип.

Это классическое определение pass by value.

ПРИМЕЧАНИЕ: Хотя вы можете думать о ссылке в качестве адреса памяти, это не так. Основной механизм заставляет его действовать логически, как если бы он был.

КРАТКОЕ ВЕРСИЯ: ссылки являются простыми переменными, как и другие примитивные типы для целей передачи аргументов методам. То, что вы можете с ними сделать, когда-то прошло, очевидно, другое.

 Смежные вопросы

  • Нет связанных вопросов^_^