2014-11-15 6 views
0

, поэтому мне задали этот вопрос в классе.Проходит ли этот вопрос по ссылке

consider the following method declaration: 

     public static int method(int[] x) 

Is the int[] x parameter passed by reference or by value? 

Насколько я понимаю, только примитивы могут передаваться по значению. Это поэтому передается по ссылке? Я читал отсюда (Are arrays passed by value or passed by reference in Java?), что «java может передавать только по значению» и что ссылка, указывающая на массив объектов x, передается как значение.

так что ответ? Является ли параметр int [] x передан по ссылке или по значению?

Может ли кто-то также дать мне пример прохождения по ссылке, поскольку java не может это сделать?

большое спасибо

+1

В java ** все ** является передачей по значению. Единственное различие заключается в том, что для объектов передается значение, содержащее ссылку объекта. – BackSlash

+0

проверить это сообщение: http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – nathandrake

+0

Примечание: 'int [] x' является * ссылкой * на массив 'int', а не массив. –

ответ

0

Все в Java передается по значению. Рассмотрите свою функцию:

public static int method(int[] x) { 

// If you change x here, it won't get reflected in the x. Because you pass a copy of the 
// original x. 

} 
+1

_ Если вы меняете x здесь, он не будет отображаться в x_ Не совсем. Если вы _reassign_ x, это не изменит исходный x. Если вы измените любой элемент на x, они будут сохранены. – BackSlash

+1

Да. См. [Это демо] (http://ideone.com/dIFZ1z). – BackSlash

+0

@BackSlash Я думаю, что его нужно уточнить относительно статических/нестатических областей. Вы можете продемонстрировать это да, но только потому, что вы вызываете статический метод из другого статического метода. Это не относится к нестатистическому контексту. – ha9u63ar

2

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

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