Во-первых, все переменные передаются по значению в Java, а не только примитивам. Просто объекты могут быть изменяемыми. Это важно понимать. Например:
public void addHour(Date date) {
date.setTime(date.getTime() + 3600 * 1000);
}
Дата передается по значению, но Date
является изменяемой, поэтому ее можно изменить, но попробуйте сделать это:
public void addHour(Date date) {
date = new Date(date.getTime() + 3600 * 1000);
}
и дата не изменится. Зачем? Потому что дата является ссылкой, но передается по значению.
Во-вторых, эти двойники как-то связаны друг с другом? Если это так, оберните их в классе, чем описывает это отношение, например:
public class Coordinate {
private final double x;
private final double y;
public Coordinate(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() { return x; }
public double getY() { return y; }
}