My question is about how references work in Java. As far as I've understood by reading of [JLS 4.12.2](http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.2) reference is a formal name allows to work with an object that reference points to. Consider the following code:

```
public class A{
    private int a = 0;

    void mutate(){
        a++;
    }
}

public void foo (A a){
    a.mutate();
}

public static void main(String[] args){
    A a = new A(); //a is a reference to the object of type A
    foo(a);
}

```

Is the reference `a` which is local to the `main` function the same as a reference which is used within `foo` function? I mean would operator `==` return true if we applied it to these references as one's operands?