两个变量a,b。 b的值是a计算出来的。我要是将这两个变量都申明为类的成员变量,那么一个对象的实例初始化后,改变其中的a值,那么b的值却还是保持原来的值。这种情况,大家是怎么解决的?下面的程序中,a的值改为3后,b还是为2。public class Test{
private int a;
private int b; public Test(){
this.a=1;
this.b=a*2;
} public void setA(int a){
this.a=a;
} public void echoA(){
System.out.println("a="+this.a);
}
public void echoB(){
System.out.println("b="+this.b);
} public static void main(String[] args){
Test ts=new Test();
ts.echoA();
ts.echoB();
ts.setA(3);
ts.echoB();
}
}
private int a;
private int b; public Test(){
this.a=1;
this.b=a*2;
} public void setA(int a){
this.a=a;
} public void echoA(){
System.out.println("a="+this.a);
}
public void echoB(){
System.out.println("b="+this.b);
} public static void main(String[] args){
Test ts=new Test();
ts.echoA();
ts.echoB();
ts.setA(3);
ts.echoB();
}
}
this.a=a;
this.b=this.a*2;
}
public class Test{
private int a;
private int b;
public Test(){
this.a=1;
makeB();
}
private void makeB(){
this.b=a*2;
}
public void setA(int a){
this.a=a;
makeB();
} public void echoA(){
System.out.println("a="+this.a);
}
public void echoB(){
System.out.println("b="+this.b);
} public static void main(String[] args){
Test ts=new Test();
ts.echoA();
ts.echoB();
ts.setA(3);
ts.echoB();
}
}
这样写才是最合理的:
public class Test{
private int a;
private int b; public Test(){
setA(1);
} public void setA(int a){
this.a=a;
this.b=this.a*2;
} public void echoA(){
System.out.println("a="+this.a);
}
public void echoB(){
System.out.println("b="+this.b);
} public static void main(String[] args){
Test ts=new Test();
ts.echoA();
ts.echoB();
ts.setA(3);
ts.echoB();
}
}
既然你希望改变a 但是b不变.那就是说,无论a怎么改变,b都不会变是吧..
那你设置成常量算了..
private int a;
private int b(int a){
int temp=a*2;
return temp;
}; public Test(){
this.a=1;
} public void setA(int a){
this.a=a;
} public void echoA(){
System.out.println("a="+this.a);
}
public void echoB(){
System.out.println("b="+this.b(a));
} public static void main(String[] args){
Test ts=new Test();
ts.echoA();
ts.echoB();
ts.setA(3);
ts.echoB();
}
}