title: Java String immutable passed by reference/value
body: <p>Hi Im studying for my scja exam and have a question about string passing by ref/value and how they are immutable. The following code outputs "abc abcfg".    </p>
  
  <p>What I want to know is why is this happening? Im not understanding what happens inside of method f. String is passed by value so surely it should change to "abcde" inside the method? Because if b+="fg" appends to the string why doesnt it work inside the method?</p>
  
  <p>Thanks!</p>
  
  <pre><code>public class Test {
  
      public static void main(String[] args){
          String a =new String("abc");
          String b = a;
          f(b);
          b+="fg"
          System.out.println(a + " " + b);
      }
  
      public static void f(String b){
          b+="de";
          b=null;
      }
  }
  </code></pre>