fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. class Ideone
  8. {
  9. String message;
  10.  
  11. Ideone(String message) { this.message = message; }
  12.  
  13. public static void foo (Ideone obj)
  14. {
  15. // Здесь мы присваивали ЛОКАЛЬНОЙ переменной obj новый объект
  16. // и соответственно теряли единственную ссылку на него при выходе из метода
  17.  
  18. // obj = new Ideone("Если бы я был передан по ссылке, вы бы увидели это сообщение.");
  19.  
  20. // Но теперь, мы обращаемся к нашему объекту через ЛОКАЛЬНУЮ переменную
  21. obj.message = "Изменённое поле";
  22. }
  23.  
  24.  
  25. public static void main (String[] args) throws java.lang.Exception
  26. {
  27. Ideone obj = new Ideone("Но вы увидите вот это, потому что параметры в Java передаются по значению.");
  28. foo(obj);
  29. System.out.println(obj.message);
  30. }
  31. }
Success #stdin #stdout 0.06s 27828KB
stdin
Standard input is empty
stdout
Изменённое поле