Otóż przyszedł czas na naukę javy i napotkałem problem, który spowodował, że oczy wyszły mi z orbit, ponieważ taka sytuacja nie powinna mieć miejsca(a w każdym razie w C++ by nie miała). Otóż tworze dwa obiekty typu Punkt i w momencie kiedy zmieniam współrzędne jednego z nich to zmieniają się współrzędne drugiego z nich. Dziwne to jest ponieważ oba obiekty są zupełnie innymi zmiennymi. Czy to jakieś dziwne zachowanie Javy czy może w moim kodzie coś jest nie tak?
Kod programu
class Punkt {
private
static int x;
static int y;
public
int retX(){
return x;
}
int retY(){
return y;
}
void setX(int X){
x = X;
}
void setY(int Y){
y = Y;
}
void setXY(int X, int Y){
x = X;
y = Y;
}
Punkt(){
x = 0;
y = 0;
}
Punkt(int X, int Y){
x = X;
y = Y;
}
}
import static java.lang.System.*;
public class Operacje {
public static void main(String[] args){
Punkt p1=new Punkt();
Punkt p2=new Punkt(1,1);
int w,x,y,z;
w=p1.retX();
x=p1.retY();
out.println("Współrzędne punktu pierwszego\nw = "+w+"; x = "+x+";");
y=p2.retX();
z=p2.retY();
out.println("Współrzędne punktu drugiego\ny = "+y+"; z = "+z+";");
p1.setXY(2, 1);
p2.setXY(3, 4);
w=p1.retX();
x=p1.retY();
out.println("Współrzędne punktu pierwszego\nw = "+w+"; x = "+x+";");
y=p2.retX();
z=p2.retY();
out.println("Współrzędne punktu drugiego\ny = "+y+"; z = "+z+";");
}
}
Wynik działania powyższego kodu
Współrzędne punktu pierwszego
w = 1; x = 1;
Współrzędne punktu drugiego
y = 1; z = 1;
Współrzędne punktu pierwszego
w = 3; x = 4;
Współrzędne punktu drugiego
y = 3; z = 4;