Указатели существуют в java - все не примитивные переменные являются указателями в java, иначе ссылки.
Они не поддерживают тот же набор операций, что и указатели в C tho - они по сути непрозрачны для пользователя языка.
Причина, по которой работает Arrays.sort(array)
, заключается в том, что array
является «указателем», который позволяет функции sort()
получить доступ к области памяти, на которую указывает переменная array
.
Теперь, почему нет:
void swap (Integer a, Integer b) {
Integer tmp = a;
a = b;
b = tmp;
}
работа, если вы сделали
Integer x = 1;
Integer y = 2;
swap(x,y);
Это потому, что java проходит по значению (которое отличается от указателей). Указатель на 1
дается на swap()
, а не на значение переменной x
(которая является адресом памяти или указателем). Таким образом, манипулирование аргументами в swap()
никак не влияет на переменную x
.