<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>smtp</artifactId>
<version>1.6.1</version>
</dependency>
Передача по ссылке подразумевает передачу ссылки на объект. В этом случае реализация метода потенциально может модифицировать переданный объект (например, вызвав метод, изменяющий состояние объекта).
В случае передачи по значению параметр копируется. Изменение параметра не будет заметно на вызывающей стороне.
В Java объекты всегда передаются по ссылке, а примитивы - по значению
Pass By Reference means the passing the address itself rather than passing the value. Pass By Value means passing a copy of the value to be passed.
TreeSet<Complex> ts = new TreeSet<>(new Comparator<Complex>() {
@Override
public int compare(Complex o1, Complex o2) {
double re1 = o1.getRe(), im1 = o1.getIm(); //Все это можно упростить.
double re2 = o2.getRe(), im2 = o2.getIm();
if (re1 != re2) return (int)(re1 - re2);
else if (im1 != im2) return (int)(im1 - im2);
else return 0;
}
});
public class Cat {
int height;
public int getHeight() {
return height; //Все ок переменную видно.
}
public void setHeight(int height) {
this.height = height; //Все ок переменную видно. this.height - эта переменная, обозначенная в классе.
}
public void setInternalVar(int var) {
int internalVar = var; //Все ок, но переменная скрыта внутри метода
}
public int getInternalVar() {
return internalVar; // !!Не компилируется - переменная internalVar не определена внутри класса.
}
}