В принципе, вы не можете реализовать метод swap
в Java.
Причина, по которой вы не можете сделать это, состоит в том, что аргумент Java имеет семантику аргумента передачи по значению.Поэтому, когда ваш swap
метод присваивает s2
s1
и т. Д., Он полностью работает с локальными переменными s1
и s2
, а НЕ с s1
и s2
переменные в вызывающем методе main
.
Напротив, если бы вы реализовали метод swap
в C, он бы выглядел примерно так:
void swap(char ** s1, char ** s2) {
char * temp = *s1;
*s1 = *s2;
*s2 = temp;
}
ивы бы назвали это так:
char *s1 = "Hello World";
char *s2 = "Goodbye World";
swap(&s1, &s2);
Обратите внимание, что мы фактически передаем адрес переменной "pointer to char".
В Java вы не можете сделать это, потому что вы не можете взятьадрес переменной.Это просто не поддерживается.