2016-10-11 3 views
-2

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

import java.time.*; 

public class Main { 
    public static void main(String[] args) { 
     String a = "aaa"; 

     myFunction(a); 

     System.out.println(a); 
    } 

    private static void myFunction(String a) { 
     a = a + "111"; 
     System.out.println(a); 
    } 
} 
+0

Вы можете либо передать экземпляр 'StringBuilder', так как это может быть изменено методом или вернуть результат' String' из метода. Строки Java неизменяемы (постоянны, заморожены). –

+0

Чтобы ответить на ваш вопрос, ссылка передается только в метод. Если ссылка изменена в методе, новая ссылка не возвращается обратно. –

ответ

0

Посмотрите на переменную область. Вы создаете локальную копию переменной и устанавливаете ее в myFunction(). Локальная копия работает только до тех пор, пока это делает метод. Когда Myfunction() завершает свою измененную копию, «a» больше недоступна.

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